【问题标题】:Account Manager returning empty for com.googlecom.google 的客户经理返回空
【发布时间】:2013-09-18 14:52:58
【问题描述】:

我想知道应用程序在使用时会在哪些情况下返回一个空数组

AccountManager am = AccountManager.get(this);
Accoun[] accounts = am.getAccountsByType("com.google");
return accounts[0].name

并返回一个空值(或空指针异常)

我问是因为我的应用程序仅在 google play 商店中可用,所以他们需要一个 google 帐户才能访问它。 那么如果应用程序是从 Play 商店下载的(除非他们侧加载它),那么 accountmanager 怎么能不返回类型为 com.google 的帐户。

同样,问题是什么情况会导致 am.getAccountsByType("com.google") 返回空值或空指针异常。

【问题讨论】:

  • 我认为这里的关键是“除非他们侧装它”。此外,也可以从 Play 商店安装应用程序,然后删除您的 Google 帐户,尽管我没有尝试过。
  • @CommonsWare 我认为如果他们删除了主要的 Google 帐户,他们也会删除它附带的应用程序?
  • @CommonsWare 我不知道这是否会导致差异,但是如果用户拥有像 person@gmail.es 这样的 gmail 帐户,用户的帐户类型是否可能会有所不同?
  • 我从未尝试从 AccountManager 检索 Google 帐户信息。我不希望基于 Gmail 域名的行为会发生变化,但谷歌的方式往往是神秘的...... :)

标签: android google-play accountmanager


【解决方案1】:

尝试使用以下代码检查 Google 帐户是否存在。我在我的应用程序中使用它来检查帐户是否存在。这行得通。

public static boolean isGoogleAccountPresent() {

        AccountManager manager = AccountManager.get(context);
        for(Account account : manager.getAccounts()) {
            if("com.google".equals(account.type)) {
                return true;
            }
        }
        return false;
}

【讨论】:

  • 哦,是的,我确实有这样的代码已经存在,当我尝试 md5 帐户时,我只是在其他地方得到一个空指针,它在那里崩溃。我的问题主要是关于 com.google 帐户何时可以为空并且仍然拥有我的 google play 帐户的信息。
  • 您是否声明了访问信息所需的权限?
  • 是的。它适用于所有拥有 google play 帐户的设备。正如我的问题所述,我不是在寻找如何获得该帐户。我正在研究导致它为谷歌帐户返回 null 的场景
  • 在这种情况下,Commonsware 的回应似乎是正确的。当至少为免费应用程序删除与 Play 商店注册帐户关联的谷歌帐户时,这些应用程序不会被删除。当帐户被删除或切换到其他 Google 帐户时,如何处理购买的应用程序,此链接 android.stackexchange.com/questions/24483/… 为您提供了一些信息。
猜你喜欢
  • 2018-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-30
  • 1970-01-01
  • 2023-04-08
相关资源
最近更新 更多