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