Intereting Posts
Тесты Travis CI для Android: нет подключенных устройств Поместите любой вид на VideoView в Android Как вставить виджет SoundCloud в Android-приложение Проверка наличия сенсорной точки внутри коллайдера коробки в Unity Как загрузить AnimationDrawable из xml-файла «Заблокировать экран» с пользовательским паролем безопасности Приложение для Android: java.lang.NullPointerException Каков метод хранения массивов или пользовательских объектов (постоянные данные)? Как удалить уведомление после того, как действие было нажато Ошибка при попытке создать круговое раскрытие: IllegalStateException: не удается запустить эту анимацию в отдельном представлении SoundCloud, как форма поиска сигналов? Сохранить состояние фрагмента с помощью навигационного ящика Отсутствует разрешение Bluetooth, но мое приложение не использует его Предложение GreenDAO groupby Как получить даты из базы данных и проверить, перекрываются ли они?

Как удалить учетную запись в AccountManager в Android

Я пытаюсь удалить пользовательскую учетную запись в AccountManager.

Это мой код:

final Handler handler = new Handler (); AccountManagerCallback<Boolean> callback = new AccountManagerCallback<Boolean>() { @Override public void run(AccountManagerFuture<Boolean> arg0) { String test = "test"; } }; AccountManagerFuture<Boolean> bool = am.removeAccount(account, callback, handler); 

Разрешения, которые я использую:

 <uses-permission android:name="android.permission.INTERNET"></uses-permission> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> <uses-permission android:name="android.permission.MANAGE_ACCOUNTS"></uses-permission> <uses-permission android:name="android.permission.GET_ACCOUNTS"></uses-permission> <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS"></uses-permission> <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS"></uses-permission> 

Учетная запись никогда не удаляется, а callback никогда не звонит, любая идея? Нет следов в журналах

Solutions Collecting From Web of "Как удалить учетную запись в AccountManager в Android"

Попробуйте это, он будет работать

  // Global Variables public static final String AUTHORITY = "com.example.package"; public static final String ACCOUNT_TYPE = "com.example.package"; public static final String ACCOUNT = "my_custom_account_name"; // Account Manager definition AccountManager accountManager = (AccountManager) this.getSystemService(ACCOUNT_SERVICE); // loop through all accounts to remove them Account[] accounts = accountManager.getAccounts(); for (int index = 0; index < accounts.length; index++) { if (accounts[index].type.intern() == AUTHORITY) accountManager.removeAccount(accounts[index], null, null); } 

требует

 <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" /> 

Вы должны переопределить следующий метод в классе Authenticator из AbstractAccountAuthenticator .

 public Bundle getAccountRemovalAllowed(AccountAuthenticatorResponse response, Account account) { Bundle result = new Bundle(); boolean allowed = true; // or whatever logic you want here result.putBoolean(AccountManager.KEY_BOOLEAN_RESULT, allowed); return result; } 

Вы должны вызвать метод ниже, чем метод removeAccount, и система позволит вам удалить учетную запись в диспетчере учетных записей. ClearPassword invalidateAuthToken

Основываясь на описании метода removeAccount:

«У аутентификатора могут быть свои собственные политики, предотвращающие удаление учетной записи, и в этом случае учетная запись не будет удалена».

Повеселись.

Этот Кодекс работает как прелесть для меня.

Вам понадобится WRITE_SYNC_SETTINGS, также необходимо добавить android.permission.MANAGE_ACCOUNTS работает для меня с одинаковым кодом кода. разрешение. Поэтому, если вы правильно используете AccountManager и Account, вам удастся удалить аккаунт успешно.

У меня возникли проблемы с использованием менеджера аккаунта в Android Simulator, поэтому попробуйте протестировать на реальном устройстве …

 AccountManager accMgr = AccountManager.get(this); final Account account = new Account(username, accountType); removeCaxtonAccount(accMgr, account); public void removeCaxtonAccount(AccountManager accMgr, Account account){ accMgr.removeAccount(account, null,null); } 

Вот мое решение. Предыдущие решения, которые я нашел, явно не ждут завершения удаления учетных записей, чтобы они случайным образом выходили из строя.

  final AccountManager accountManager = AccountManager.get(getContext()); final String accountType = AuthenticatorService.ACCOUNT_TYPE; final Account[] availableAccounts = accountManager.getAccountsByType(accountType); for (final Account availableAccount : availableAccounts) { final AccountManagerFuture<Boolean> booleanAccountManagerFuture = accountManager.removeAccount(availableAccount, null, null); assertTrue("Impossible to delete existing account for this application", booleanAccountManagerFuture.getResult(1, TimeUnit.SECONDS)); } 

Примечание. Вам все еще нужны упомянутые выше разрешения.