帐户权限组并非所有的权限自动授予权限、有的、帐户

2023-09-07 08:49:12 作者:欧美饭

在我的应用程序,我需要创建一个帐户以下权限:

In my app, I need the following permissions for creating an account:

<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"/>

这是我的理解是,在男,这些应该被自动授予。

It is my understanding that in the M, these should be granted automatically.

不过,我所看到的是,只有GET_ACCOUNTS是理所当然的。我检查用下面的code:

However, what I'm seeing is that only GET_ACCOUNTS is granted. I've checked this with the following code:

@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

如果我尝试请求的权限

requestPermissions(new String[] {
    Manifest.permission.GET_ACCOUNTS,
    Manifest.permission.MANAGE_ACCOUNTS,
    Manifest.permission.AUTHENTICATE_ACCOUNTS,
    Manifest.permission.USE_CREDENTIALS,
}, 1);

对话框说允许AccountPermissions执行一个未知的行动吗?,导致我相信,这些不打算从用户请求。此外,该帐户权限组显示了在应用程序信息页面上遗留的权限。

The dialog says "Allow AccountPermissions to perform an unknown action?", leading me to believe that these are not intended to be requested from the user. Additionally, the ACCOUNT permission group shows up under legacy permissions on the app info page.

我需要做些什么来让机器人自动授予我这些权限,还是我真的应该向用户请求呢?

Do I need to do something to get Android to grant me these permissions automatically, or am I really supposed to request them from the user?

推荐答案

这是固定在最新的M preVIEW。

This was fixed in the latest M preview.