GET_ACCOUNT权限未在android N中授予

时间:2018-06-28 05:32:52

标签: android android-7.0-nougat runtime-permissions

我正在做客户经理。我要检查帐户是否存在。

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

它总是返回null或“不存在GET_ACCOUNTS”。在日志中。我还添加了清单。我也在请求运行时许可。

1 个答案:

答案 0 :(得分:0)

  

GET_ACCOUNTS->从Android 6.0(API级别23)开始,如果应用共享   管理帐户的身份验证者的签名,不是   需要“ GET_ACCOUNTS”权限才能读取有关该帐户的信息。   在Android 5.1及更低版本上,所有应用都需要具有“ GET_ACCOUNTS”权限才能   读取有关任何帐户的信息。GET_ACCOUNTS权限现在为 Dead

您可以使用 READ_CONTACTS 权限代替。

  • 选中 Build.VERSION.SDK_INT

演示

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