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