Priyadarshini Maurya
Priyadarshini Maurya

Reputation: 43

GET_ACCOUNT permission is not granted in android N

I am working on Account manager. I want to check account is exists or not.

 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;
        }
    }

It always returns null or "GET_ACCOUNTS not present." in logs. I have added in manifest also.I am asking for run time permission also.

Upvotes: 3

Views: 2213

Answers (1)

IntelliJ Amiya
IntelliJ Amiya

Reputation: 75788

GET_ACCOUNTS--> Beginning with Android 6.0 (API level 23), if an app shares the signature of the authenticator that manages an account, it does not need "GET_ACCOUNTS" permission to read information about that account. On Android 5.1 and lower, all apps need "GET_ACCOUNTS" permission to read information about any account.The GET_ACCOUNTS permission is now Dead

You can use READ_CONTACTS permission instead of.

  • Check to 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;
        }

Upvotes: 1

Related Questions