Android 6.0权限.GET_ACCOUNTS

Spy*_*Zip 35 permissions android android-6.0-marshmallow

我用它来获得许可:

if (ContextCompat.checkSelfPermission(context, Manifest.permission.GET_ACCOUNTS) != PackageManager.PERMISSION_GRANTED) {

    // Should we show an explanation?
    if (ActivityCompat.shouldShowRequestPermissionRationale(context, Manifest.permission.GET_ACCOUNTS)) {

    } else {
        // No explanation needed, we can request the permission.
        ActivityCompat.requestPermissions(context, new String[]{Manifest.permission.GET_ACCOUNTS}, PERMISSIONS_REQUEST_GET_ACCOUNTS);

        // MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
        // app-defined int constant. The callback method gets the
        // result of the request.
    }
}
Run Code Online (Sandbox Code Playgroud)

但是权限的弹出对话框要求用户访问联系人!?!?

在Play商店的6.0之前

<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
Run Code Online (Sandbox Code Playgroud)

请求被命名为Identity并解释我需要它来获取设备帐户.

Par*_*rth 34

那是因为权限组.基本上,权限放在不同的组下,如果授予其中一个权限,则授予该组的所有权限.

例如.在"联系人"下,有写/读联系人和获取帐户,因此当您要求其中任何一个时,弹出窗口会询问联系人权限.

通读:每个Android开发人员必须了解新Android的运行时权限


编辑1

只是想我添加相关(不是获取帐户,但权限和组)奥利奥更新信息:
来源:https://developer.android.com/about/versions/oreo/android-8.0-changes.html#rmp

在Android 8.0(API级别26)之前,如果应用程序在运行时请求了权限并且授予了权限,则系统也会错误地授予应用程序其他属于同一权限组的权限,并且已在表现.

对于定位到Android 8.0的应用,此行为已得到纠正.该应用程序仅被授予其明确请求的权限.但是,一旦用户向应用程序授予权限,则会自动授予该权限组中所有后续权限请求.


  • 这就是让我质疑谷歌的事情.联系人是一项非常重要的权限,可以保护对数百人的私人信息的访问.相比之下,GET_ACCOUNTS几乎毫无意义.现在我必须停止在我的应用程序中使用GET_ACCOUNTS. (9认同)
  • 是的..我认为 Google/Android 在安装前没有提供所有权限和在运行时没有单独询问太多权限之间陷入了困境。然后它出现在中间的某个地方 (2认同)

Com*_*are 18

GET_ACCOUNTS已移至CONTACTSAndroid 6.0中的权限组.虽然API让我们提供权限,但系统会提示用户(至少为Android 6.0)提供权限组.因此,用户将被赋予相同的提示GET_ACCOUNTS的用户将得到READ_CONTACTSWRITE_CONTACTS.

  • 这太糟糕了.我注意到人们也在这里抱怨:https://code.google.com/p/android/issues/detail?id = 189766.我使用它来将有效负载数据添加到应用内计费机制中. (8认同)
  • 幸运的是,对于仅为自己的帐户使用权限的用户,有一种解决方法:https://code.google.com/p/android/issues/detail?id = 189766#c8 (5认同)

ibm*_*khd 8

幸运的是,这将在Android N中发生变化

http://developer.android.com/preview/behavior-changes.html#perm

现在不推荐使用GET_ACCOUNTS权限.系统会忽略针对Android N的应用的此权限.

  • 你可以仔细检查你的链接,因为我找不到那里引用的文字.希望Google没有改变他们对弃用它的看法...... (2认同)