AccountManager返回空帐户

时间:2015-12-08 13:26:48

标签: android accountmanager

我有一个应用程序正在实现我自己的身份验证器,如this文章中所述。它按预期工作正常。现在我需要从AccountManager获取谷歌帐户,我这样做:

 Account[] accounts = AccountManager.get(this).getAccountsByType("com.google");

问题是它返回一个空数组。但是,当我在我的测试应用程序中使用此片段而没有所有Authenticator的东西时,它就像一个魅力。我看不出这些案件之间的实际差异在哪里。有人遇到过这个问题吗?

1 个答案:

答案 0 :(得分:9)

我的猜测是你缺少GET_ACCOUNTS权限。您可以在没有它的情况下获得自己的应用程序帐户,但访问其他帐户需要获得许可。

由于runtime permissions,这些日子只是在清单中请求GET_ACCOUNTS,这有点复杂。现在你必须动态地请求它们,向GET_ACCOUNTS用户显示的消息非常含糊不清(它要求访问联系人,因为它是联系人权限组的一部分)。

您可能希望使用AccountPicker(来自Google Play服务),这不需要任何权限。它会向用户显示一个包含所请求帐户的对话框(并提供添加新帐户的选项)。