From c0e942e4f2d296f887b0e2f96a186cc2f5649a66 Mon Sep 17 00:00:00 2001 From: Mariotaku Lee Date: Sat, 10 Dec 2016 10:03:20 +0800 Subject: [PATCH] fixed crash for pre-lollipop devices when removing account --- twidere/build.gradle | 4 +- .../util/support/AccountManagerSupport.java | 15 ++++--- .../fragment/AccountsManagerFragment.kt | 2 +- .../twidere/fragment/CustomTabsFragment.kt | 42 +------------------ 4 files changed, 14 insertions(+), 49 deletions(-) diff --git a/twidere/build.gradle b/twidere/build.gradle index 314eab1f4..b4d007574 100644 --- a/twidere/build.gradle +++ b/twidere/build.gradle @@ -35,8 +35,8 @@ android { applicationId "org.mariotaku.twidere" minSdkVersion 14 targetSdkVersion 25 - versionCode 227 - versionName '3.3.9' + versionCode 228 + versionName '3.3.10' multiDexEnabled true buildConfigField 'boolean', 'LEAK_CANARY_ENABLED', 'Boolean.parseBoolean("true")' diff --git a/twidere/src/main/java/org/mariotaku/twidere/util/support/AccountManagerSupport.java b/twidere/src/main/java/org/mariotaku/twidere/util/support/AccountManagerSupport.java index ffc19e590..73abe0f15 100644 --- a/twidere/src/main/java/org/mariotaku/twidere/util/support/AccountManagerSupport.java +++ b/twidere/src/main/java/org/mariotaku/twidere/util/support/AccountManagerSupport.java @@ -10,6 +10,8 @@ import android.app.Activity; import android.os.Build; import android.os.Bundle; import android.os.Handler; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; import android.support.annotation.RequiresApi; import java.io.IOException; @@ -20,10 +22,11 @@ import java.util.concurrent.TimeUnit; */ public class AccountManagerSupport { - public static AccountManagerFuture removeAccount(AccountManager am, Account account, - Activity activity, - final AccountManagerCallback callback, - Handler handler) { + public static AccountManagerFuture removeAccount(@NonNull AccountManager am, + @NonNull Account account, + @Nullable Activity activity, + @Nullable final AccountManagerCallback callback, + @Nullable Handler handler) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) { return AccountManagerSupportL.removeAccount(am, account, activity, callback, handler); } @@ -31,7 +34,9 @@ public class AccountManagerSupport { final AccountManagerFuture future = am.removeAccount(account, new AccountManagerCallback() { @Override public void run(AccountManagerFuture future) { - callback.run(new BooleanToBundleAccountManagerFuture(future)); + if (callback != null) { + callback.run(new BooleanToBundleAccountManagerFuture(future)); + } } }, handler); return new BooleanToBundleAccountManagerFuture(future); diff --git a/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/AccountsManagerFragment.kt b/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/AccountsManagerFragment.kt index aaaf2cd04..e859cebfd 100644 --- a/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/AccountsManagerFragment.kt +++ b/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/AccountsManagerFragment.kt @@ -189,7 +189,7 @@ class AccountsManagerFragment : BaseSupportFragment(), LoaderManager.LoaderCallb when (which) { DialogInterface.BUTTON_POSITIVE -> { val accountKey = account.getAccountKey(am) - AccountManagerSupport.removeAccount(am, account, activity, null, null) + AccountManagerSupport.removeAccount(am, account, null, null, null) val where = Expression.equalsArgs(AccountSupportColumns.ACCOUNT_KEY).sql val whereArgs = arrayOf(accountKey.toString()) // Also delete tweets related to the account we previously diff --git a/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/CustomTabsFragment.kt b/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/CustomTabsFragment.kt index e5344616f..3abbb0b27 100644 --- a/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/CustomTabsFragment.kt +++ b/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/CustomTabsFragment.kt @@ -20,7 +20,6 @@ package org.mariotaku.twidere.fragment import android.accounts.AccountManager -import android.app.Activity import android.app.Dialog import android.content.ContentValues import android.content.Context @@ -122,36 +121,6 @@ class CustomTabsFragment : BaseSupportFragment(), LoaderCallbacks, Mult progressContainer.visibility = if (shown) View.GONE else View.VISIBLE } - override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { - when (requestCode) { - REQUEST_ADD_TAB -> { - if (resultCode == Activity.RESULT_OK) { - val values = ContentValues() - values.put(Tabs.NAME, data!!.getStringExtra(EXTRA_NAME)) - values.put(Tabs.ICON, data.getStringExtra(EXTRA_ICON)) - values.put(Tabs.TYPE, data.getStringExtra(EXTRA_TYPE)) - values.put(Tabs.ARGUMENTS, data.getStringExtra(EXTRA_ARGUMENTS)) - values.put(Tabs.EXTRAS, data.getStringExtra(EXTRA_EXTRAS)) - values.put(Tabs.POSITION, adapter.count) - contentResolver.insert(Tabs.CONTENT_URI, values) - SettingsActivity.setShouldRestart(activity) - } - } - REQUEST_EDIT_TAB -> { - if (resultCode == Activity.RESULT_OK && data!!.hasExtra(EXTRA_ID)) { - val values = ContentValues() - values.put(Tabs.NAME, data.getStringExtra(EXTRA_NAME)) - values.put(Tabs.ICON, data.getStringExtra(EXTRA_ICON)) - values.put(Tabs.EXTRAS, data.getStringExtra(EXTRA_EXTRAS)) - val where = Expression.equals(Tabs._ID, data.getLongExtra(EXTRA_ID, -1)).sql - contentResolver.update(Tabs.CONTENT_URI, values, where, null) - SettingsActivity.setShouldRestart(activity) - } - } - } - super.onActivityResult(requestCode, resultCode, data) - } - override fun onCreateActionMode(mode: ActionMode, menu: Menu): Boolean { mode.menuInflater.inflate(R.menu.action_multi_select_items, menu) return true @@ -221,16 +190,6 @@ class CustomTabsFragment : BaseSupportFragment(), LoaderCallbacks, Mult setListShown(true) } - override fun onOptionsItemSelected(item: MenuItem?): Boolean { - when (item!!.itemId) { - else -> { - val intent = item.intent ?: return false - startActivityForResult(intent, REQUEST_ADD_TAB) - return true - } - } - } - override fun onPrepareActionMode(mode: ActionMode, menu: Menu): Boolean { updateTitle(mode) return true @@ -415,6 +374,7 @@ class CustomTabsFragment : BaseSupportFragment(), LoaderCallbacks, Mult context.contentResolver.insert(Tabs.CONTENT_URI, TabValuesCreator.create(tab)) } } + SettingsActivity.setShouldRestart(activity) dismiss() } }