Android 具有GET_ACCOUNTS权限的错误消息

Android 具有GET_ACCOUNTS权限的错误消息,android,android-permissions,google-account,android-6.0-marshmallow,Android,Android Permissions,Google Account,Android 6.0 Marshmallow,我正在尝试使用新的Android M权限更新我的应用程序,该权限使用Google+登录,但当我执行检查自我权限(Manifest.permission.GET_ACCOUNTS)时,弹出的对话框显示“允许我的应用程序访问您的联系人?”以及“拒绝”和“允许”按钮 对于GET_帐户权限来说,这似乎有点奇怪。它不应该说一些与访问您的帐户有关的内容吗?这是虫子吗?或者我应该做些不同的事情吗?GET_ACCOUNTS权限是android.permission-group.CONTACTS组的一部分,以及

我正在尝试使用新的Android M权限更新我的应用程序,该权限使用Google+登录,但当我执行
检查自我权限(Manifest.permission.GET_ACCOUNTS)
时,弹出的对话框显示“允许我的应用程序访问您的联系人?”以及“拒绝”和“允许”按钮


对于GET_帐户权限来说,这似乎有点奇怪。它不应该说一些与访问您的帐户有关的内容吗?这是虫子吗?或者我应该做些不同的事情吗?

GET_ACCOUNTS权限是android.permission-group.CONTACTS组的一部分,以及

  • android.permission.READ_联系人
  • android.permission.WRITE_联系人
  • android.permission.GET_帐户
这就是为什么你会收到联系人的信息

因此,当您请求组中的一个权限时,您将获得该组中的所有权限。
你可以在Android M中找到更多关于权限的信息。我今天下午更新了一个客户端的应用程序,允许用户使用Google+登录。您可能不需要在运行时检查GET_ACCOUNTS权限。我更新了清单,用
android:maxSdkVersion=“22”
来限定GET\u ACCOUNTS权限

在运行棉花糖的Nexus5上,我能够使用Google+成功登录,而不显示运行时权限对话框。联系人也不会出现在“设置”>“应用程序”>“我的客户端应用程序”>“权限”中

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


描述了反映棉花糖行为变化的GET_账户文档。

我建议不要使用Google+登录,而是使用新的Google登录。它不需要特殊权限即可访问电子邮件,并且可以轻松集成


嗯。。真奇怪。因此,如果我们要求获得GET_账户许可,用户说我们试图阅读联系人似乎会产生误导。没有?这就是为什么谷歌提出了shouldshowRequestPermissionRegulation方法,所以你可以向用户解释为什么你要问某个许可证我确实有这个许可证,但它似乎没有被调用,似乎Android决定了它是否应该显示它。因此:(是的,所以你应该实现它。我已经实现了,而且效果很好。另外,我发现这篇文章很有用。谷歌的实现非常差。他们尝试对权限进行分组,因此用户不必为每个单独的权限授予访问权。但是在这种情况下,分组没有意义。你可能要求访问用户的google drive帐户,与联系人无关,以及shouldShowRequestPermissionRegulation()只有在他们拒绝请求时才会显示。以清单方式指定
maxSdkVersion
是否有任何副作用?不要相信,没有。在棉花糖上,如果您需要访问应用程序创建的任何具有不同签名的帐户,则应在运行时提示获取帐户权限。不要使用maxSdkVersion 22。这意味着没有棉花糖设备会在Play Store中看到您的应用。@Timur_C maxSdkVersion 22应该用作的属性,而不是应用的maxSdkVersion,否则您是正确的Play Store将限制应用程序分发到棉花糖前设备。好的,那么您如何使用O访问棉花糖上的帐户但是权限?如果你为权限设置max SDK,它在新版本上不起作用。这是设计上的,但设计上令人费解。联系权限非常重要-通常保护数百人的私人数据。为了使用GET_帐户,必须向用户询问这一点是没有意义的-用户不应该访问别那样。