2015-09-25 54 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,如果他們想要檢索除自己以外的任何帳戶。