对于Marshmallow权限模型,AirManager中的AccountManager getAccounts()异常,他们是如何做到的?

时间:2015-09-25 16:11:27

标签: android android-appwidget android-permissions

我在运行Marshmallow预览3的Nexus 5设备上安装了Airbnb,并且正在使用权限模型。我在使用他们的应用程序时发现了一个很奇怪

通常,如果您使用AccountManager getAccounts()方法获取在设备中注册的电子邮件帐户,则需要启用GET_ACCOUNTS权限才能使其正常工作。

但是,在他们的应用程序中,即使我撤销GET_ACCOUNTS权限,他们仍然可以访问已注册的电子邮件帐户,这些帐户完全是非常奇怪的o.O(他们在电子邮件登录中具有自动完成功能)。

这是否会破坏拥有运行时权限模型的目的?

1 个答案:

答案 0 :(得分:4)

Airbnb不针对API 23,因此他们不使用运行时权限(您可以在安装时在权限列表出现时看到此信息)。相反,它们会遵循compatibility model,用户仍然可以以不会崩溃的方式禁用应用程序的权限。

然而,兼容模式(从Developer Preview 3开始)不允许用户禁用GET_ACCOUNTS。事实上,如果未针对API 23的开发人员未在CONTACTS组中使用任何其他运行时权限,则联系人组甚至似乎不会被禁用(即使从技术上讲它将包括GET_ACCOUNTS)。

当然,一旦Airbnb转向目标API 23并使用运行时权限,那么如果他们想要检索除他们自己以外的任何帐户,他们将需要请求联系人权限组使用GET_ACCOUNTS。