4

私のアプリでは、アカウントを作成するために次の権限が必要です。

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

ダイアログには、「AccountPermissions に不明なアクションの実行を許可しますか?」と表示されているため、これらはユーザーからの要求を意図したものではないと思われます。さらに、ACCOUNT 権限グループは、アプリ情報ページの従来の権限の下に表示されます。

Android にこれらのアクセス許可を自動的に付与するために何かをする必要がありますか、それとも本当にユーザーに要求する必要がありますか?

4

2 に答える 2

0

AUTHENTICATE_ACCOUNTS、MANAGE_ACCOUNTS、USE_CREDENTIALS は存在しません。オーセンティケーターの UID のみがこれらのアクセス許可によって保護された操作を実行できるように、API の範囲を設定しました。通常のアプリには、これらの操作を使用するための有効なユース ケースがありません。

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

于 2015-12-12T11:34:15.227 に答える