并非自动授予ACCOUNT权限组中的所有权限

时间:2015-06-21 09:56:42

标签: android android-permissions android-6.0-marshmallow

在我的应用中,我需要以下权限才能创建帐户:

SELECT id, <...>, status FROM table WHERE something

据我了解,在M中,这些应该自动授予。

然而,我所看到的是只授予GET_ACCOUNTS。我已使用以下代码检查了这一点:

<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS"/>
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS"/>
<uses-permission android:name="android.permission.USE_CREDENTIALS"/>

打印哪些:

@Override protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);

  logPermissionStatus(Manifest.permission.GET_ACCOUNTS);
  logPermissionStatus(Manifest.permission.MANAGE_ACCOUNTS);
  logPermissionStatus(Manifest.permission.AUTHENTICATE_ACCOUNTS);
  logPermissionStatus(Manifest.permission.USE_CREDENTIALS);
}

private void logPermissionStatus(String permission) {
  if (checkSelfPermission(permission) == PackageManager.PERMISSION_GRANTED) {
    Log.d("AccountPermissions", "Granted: " + permission);
  } else {
    Log.d("AccountPermissions", "Denied:  " + permission);
  }
}

如果我尝试请求权限

D/AccountPermissions﹕ Granted: android.permission.GET_ACCOUNTS
D/AccountPermissions﹕ Denied:  android.permission.MANAGE_ACCOUNTS
D/AccountPermissions﹕ Denied:  android.permission.AUTHENTICATE_ACCOUNTS
D/AccountPermissions﹕ Denied:  android.permission.USE_CREDENTIALS

对话框显示&#34;允许AccountPermissions执行未知操作?&#34;让我相信这些不是用户要求的。此外,ACCOUNT权限组显示在应用信息页面上的旧版权限下。

我是否需要做一些事情让Android自动授予我这些权限,或者我真的应该向用户请求它们吗?

2 个答案:

答案 0 :(得分:0)

这已在最新的M预览中修复。

答案 1 :(得分:0)

AUTHENTICATE_ACCOUNTS,MANAGE_ACCOUNTS,USE_CREDENTIALS不再存在。我们确定了API,使得只有身份验证者的UID才能执行受这些权限保护的操作。普通应用程序没有使用这些操作的有效用例。

https://code.google.com/p/android-developer-preview/issues/detail?id=2592