我在运行Marshmallow预览3的Nexus 5设备上安装了Airbnb,并且正在使用权限模型。我在使用他们的应用程序时发现了一个很奇怪
通常,如果您使用AccountManager getAccounts()方法获取在设备中注册的电子邮件帐户,则需要启用GET_ACCOUNTS权限才能使其正常工作。
但是,在他们的应用程序中,即使我撤销GET_ACCOUNTS权限,他们仍然可以访问已注册的电子邮件帐户,这些帐户完全是非常奇怪的o.O(他们在电子邮件登录中具有自动完成功能)。
这是否会破坏拥有运行时权限模型的目的?
答案 0 :(得分:4)
Airbnb不针对API 23,因此他们不使用运行时权限(您可以在安装时在权限列表出现时看到此信息)。相反,它们会遵循compatibility model,用户仍然可以以不会崩溃的方式禁用应用程序的权限。
然而,兼容模式(从Developer Preview 3开始)不允许用户禁用GET_ACCOUNTS。事实上,如果未针对API 23的开发人员未在CONTACTS组中使用任何其他运行时权限,则联系人组甚至似乎不会被禁用(即使从技术上讲它将包括GET_ACCOUNTS)。
当然,一旦Airbnb转向目标API 23并使用运行时权限,那么如果他们想要检索除他们自己以外的任何帐户,他们将需要请求联系人权限组使用GET_ACCOUNTS。