在Airbnb的棉花糖权限模型中,AccountManager getAccounts()异常,他们是如何做到的



我在运行Marshmallow预览版3的Nexus 5设备上安装了Airbnb,并试用了许可模式。在使用他们的应用程序时,我发现了一个非常奇怪的地方。

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

然而,在他们的应用程序中,即使我撤销GET_ACCOUNTS权限,他们仍然能够访问注册的电子邮件帐户,这真的很奇怪o.O(他们在电子邮件登录中有自动完成功能)。

这不是违背了运行时权限模型的目的吗?

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

兼容性模式,然而,不允许用户禁用GET_ACCOUNTS(从Developer Preview 3开始)。事实上,如果不以API 23为目标的开发人员不使用CONTACTS组中的任何其他运行时权限,则CONTACTS组甚至不会被禁用(尽管从技术上讲它将包括GET_ACCOUNTS)。

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

相关内容

最新更新