具有GET_ACCOUNTS权限的错误消息

时间:2015-09-25 14:20:51

标签: android android-permissions google-account android-6.0-marshmallow

我尝试使用使用Google+登录的新Android M权限更新我的应用,但是当我执行checkSelfPermission(Manifest.permission.GET_ACCOUNTS)弹出的对话框显示"允许MyApp访问您的联系人?&#34 ;使用拒绝和允许按钮。

对于GET_ACCOUNTS权限,这似乎有些奇怪。不应该说与访问您的帐户相关的内容吗?这是一个错误吗?或者我应该做些不同的事情?

3 个答案:

答案 0 :(得分:4)

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

  • android.permission.READ_CONTACTS
  • android.permission.WRITE_CONTACTS
  • android.permission.GET_ACCOUNTS

这就是您收到CONTACTS消息的原因。

因此,当您在组中要求一个权限时,您将获得该组中的所有权限。 您可以在Android M here

中找到有关权限的更多信息

答案 1 :(得分:4)

我建议您远离Google+登录信息并使用新的Google登录信息。它不需要特殊权限来访问电子邮件,并且可以轻松集成。

https://developers.google.com/identity/sign-in/android/start

答案 2 :(得分:-1)

我今天下午更新了一个客户端应用,允许用户使用Google+登录。您可能不需要在运行时检查GET_ACCOUNTS权限。我更新了清单,以使用android:maxSdkVersion="22"限定GET_ACCOUNTS权限。

在运行Marshmallow的Nexus 5上,我能够使用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"/>

{* 3}}描述了反映Marshmallow行为变化的GET_ACCOUNTS文档。