fixed crash for pre-lollipop devices when removing account

This commit is contained in:
Mariotaku Lee 2016-12-10 10:03:20 +08:00
parent 8b64005cd0
commit c0e942e4f2
4 changed files with 14 additions and 49 deletions

View File

@ -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")'

View File

@ -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<Bundle> removeAccount(AccountManager am, Account account,
Activity activity,
final AccountManagerCallback<Bundle> callback,
Handler handler) {
public static AccountManagerFuture<Bundle> removeAccount(@NonNull AccountManager am,
@NonNull Account account,
@Nullable Activity activity,
@Nullable final AccountManagerCallback<Bundle> 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<Boolean> future = am.removeAccount(account, new AccountManagerCallback<Boolean>() {
@Override
public void run(AccountManagerFuture<Boolean> future) {
callback.run(new BooleanToBundleAccountManagerFuture(future));
if (callback != null) {
callback.run(new BooleanToBundleAccountManagerFuture(future));
}
}
}, handler);
return new BooleanToBundleAccountManagerFuture(future);

View File

@ -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

View File

@ -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<Cursor?>, 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<Cursor?>, 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<Cursor?>, Mult
context.contentResolver.insert(Tabs.CONTENT_URI, TabValuesCreator.create(tab))
}
}
SettingsActivity.setShouldRestart(activity)
dismiss()
}
}