Я использую метод removeAccount для удаления созданной пользователем учетной записи, и я получаю «исключение такого метода отсутствует» на устройствах с API <22.

        AccountManager.get(mContext).removeAccount(getAccountByType(mContext.getResources().getString(R.string.account_type)), null, null, null);

Мой файл манифеста имеет следующие разрешения, как указано в документации:

<uses-permission android:name="android.permission.MANAGE_ACCOUNTS"
    android:maxSdkVersion="22" />

Любая помощь, пожалуйста?

2
tsiro 28 Май 2017 в 12:13

2 ответа

Лучший ответ

Для API <22 вам нужно использовать устаревший метод. В вашем коде вам понадобится метод if и использовать правильный метод, основанный на уровне API устройства.

Вам, вероятно, нужно сделать что-то подобное:

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP_MR1) {
     removeAccount (Account account, AccountManagerCallback<Boolean> callback, 
                    Handler handler);
} else {
     removeAccount (Account account, Activity activity, 
                    AccountManagerCallback<Bundle> callback, Handler handler);
}
2
MatPag 28 Май 2017 в 09:29

Вы используете метод, который был добавлен в API22. Есть 2 версии этого метода. Тот, который может использоваться для версий более старых, чем API22, и тот, который вы используете, можно использовать из / после API 22.

enter image description here

Приведенный ниже метод устарел на уровне API 22.


Таким образом, вы можете сделать это как

if (Build.VERSION.SDK_INT < 22) {
    // Depricated version
} else {
   // New version
}
2
Pankaj Kumar 28 Май 2017 в 09:21