并非自动授予 ACCOUNT 权限组中的所有权限
Not all permissions in ACCOUNT permission group granted automatically
在我的应用中,我需要以下权限才能创建帐户:
<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"/>
据我了解,在 M 中,这些应该是自动授予的。
但是,我看到的是只有 GET_ACCOUNTS 被授予。我已经使用以下代码对此进行了检查:
@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);
对话框显示 "Allow AccountPermissions to perform an unknown action?",让我相信这些并不是要从用户那里请求的。此外,ACCOUNT 权限组显示在应用信息页面上的旧权限下。
我需要做些什么来让 Android 自动授予我这些权限,还是我真的应该向用户请求它们?
这已在最新的 M 预览版中修复。
AUTHENTICATE_ACCOUNTS、MANAGE_ACCOUNTS、USE_CREDENTIALS 已不存在。我们限定了 API 的范围,以便只有身份验证器的 UID 才能执行受这些权限保护的操作。普通应用没有使用这些操作的有效用例。
https://code.google.com/p/android-developer-preview/issues/detail?id=2592
在我的应用中,我需要以下权限才能创建帐户:
<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"/>
据我了解,在 M 中,这些应该是自动授予的。
但是,我看到的是只有 GET_ACCOUNTS 被授予。我已经使用以下代码对此进行了检查:
@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);
对话框显示 "Allow AccountPermissions to perform an unknown action?",让我相信这些并不是要从用户那里请求的。此外,ACCOUNT 权限组显示在应用信息页面上的旧权限下。
我需要做些什么来让 Android 自动授予我这些权限,还是我真的应该向用户请求它们?
这已在最新的 M 预览版中修复。
AUTHENTICATE_ACCOUNTS、MANAGE_ACCOUNTS、USE_CREDENTIALS 已不存在。我们限定了 API 的范围,以便只有身份验证器的 UID 才能执行受这些权限保护的操作。普通应用没有使用这些操作的有效用例。
https://code.google.com/p/android-developer-preview/issues/detail?id=2592