2015-09-25 34 views
3

我在运行Marshmallow预览版3的Nexus 5设备上安装了Airbnb,并且正在使用许可模式。在使用他们的应用程序时,我发现了一个奇怪的现象AccountManager getAccounts()异常在Airbnb的棉花糖许可模式,他们怎么做?

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

但是,在他们的应用程序中,即使我撤销了GET_ACCOUNTS权限,他们仍然能够访问注册的电子邮件帐户,这些帐户在所有的真实情况下都非常奇怪o.O(它们在电子邮件登录时具有自动完成功能)。

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

回答

4

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

但是,兼容模式不允许用户禁用GET_ACCOUNTS。事实上,如果一个没有定位API 23的开发者没有在CONTACTS组中使用任何其他运行时权限,那么Contacts组甚至不会被禁用(尽管在技术上它将包括GET_ACCOUNTS)。

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