我有一个应用程序正在实现我自己的身份验证器,如this文章中所述。它按预期工作正常。现在我需要从AccountManager获取谷歌帐户,我这样做:
Account[] accounts = AccountManager.get(this).getAccountsByType("com.google");
问题是它返回一个空数组。但是,当我在我的测试应用程序中使用此片段而没有所有Authenticator的东西时,它就像一个魅力。我看不出这些案件之间的实际差异在哪里。有人遇到过这个问题吗?
答案 0 :(得分:9)
我的猜测是你缺少GET_ACCOUNTS
权限。您可以在没有它的情况下获得自己的应用程序帐户,但访问其他帐户需要获得许可。
由于runtime permissions,这些日子只是在清单中请求GET_ACCOUNTS
,这有点复杂。现在你必须动态地请求它们,向GET_ACCOUNTS
用户显示的消息非常含糊不清(它要求访问联系人,因为它是联系人权限组的一部分)。
您可能希望使用AccountPicker
(来自Google Play服务),这不需要任何权限。它会向用户显示一个包含所请求帐户的对话框(并提供添加新帐户的选项)。