在安卓N系统中,未授予GET_ACCOUNT权限。

3

我正在处理账户管理。我想要检查账户是否存在。

 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 not present”。我已经在清单中添加了它。我还请求了运行时权限。

1个回答

1

GET_ACCOUNTS--> 从Android 6.0(API 23)开始,如果一个应用程序与管理账户的认证器具有相同的签名,则无需"GET_ACCOUNTS"权限即可读取有关该帐户的信息。在Android 5.1及更低版本中,所有应用程序都需要"GET_ACCOUNTS"权限才能读取有关任何帐户的信息。现在,GET_ACCOUNTS权限已经废弃

您可以使用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;
        }

我已经添加了所有权限 Manifest.permission.WRITE_CONTACTS、Manifest.permission.READ_PHONE_STATE、Manifest.permission.SYSTEM_ALERT_WINDOW、Manifest.permission.READ_CONTACTS、Manifest.permission.CALL_PHONE。 - Priyadarshini Maurya
@PriyadarshiniMaurya 已解决了吗? - IntelliJ Amiya

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接