Разрешение GET_ACCOUNT не предоставляется в Android N - PullRequest
0 голосов
/ 28 июня 2018

Я работаю с менеджером аккаунта. Я хочу проверить, существует ли учетная запись или нет.

 private static final String TAG = "UserAccountUtil";

    public static Account getAccount(Context context) {
        if (ActivityCompat.checkSelfPermission(context, android.Manifest.permission.GET_ACCOUNTS) != PackageManager.PERMISSION_GRANTED) {
            Log.d(TAG, "GET_ACCOUNTS not present.");

        }

        AccountManager accountManager = AccountManager.get(context);
        Account[] accounts = accountManager.getAccountsByType(Constant.ACCOUNT_TYPE);
        if (accounts.length > 0) {
            Log.d(TAG, "GET_ACCOUNTS  present..."+accounts[0]);
            return accounts[0];
        } else {
            Log.d(TAG, "GET_ACCOUNTS not  present...");

            return null;
        }
    }

Всегда возвращает ноль или «GET_ACCOUNTS не присутствует». в логах. Я также добавил в манифест. Я также прошу разрешения во время выполнения.

1 Ответ

0 голосов
/ 28 июня 2018

GET_ACCOUNTS -> Начиная с Android 6.0 (уровень API 23), если приложение совместно использует подпись аутентификатора, управляющего аккаунтом, не необходимо разрешение «GET_ACCOUNTS» для чтения информации об этом аккаунте. На Android 5.1 и ниже, все приложения должны иметь разрешение «GET_ACCOUNTS» для читать информацию о любом аккаунте. Разрешение GET_ACCOUNTS теперь Dead

Вы можете использовать разрешение READ_CONTACTS вместо.

  • Проверьте до Build.VERSION.SDK_INT

DEMO

if (accounts.length > 0 && android.os.Build.VERSION.SDK_INT<23 ) {
            Log.d(TAG, "GET_ACCOUNTS  present..."+accounts[0]);
            return accounts[0];
        } else {
            Log.d(TAG, "GET_ACCOUNTS not  present...");

            return null;
        }
...