【问题标题】:Handling the C2DM error ACCOUNT_MISSING in Android在 Android 中处理 C2DM 错误 ACCOUNT_MISSING
【发布时间】:2011-07-07 09:23:54
【问题描述】:

注册 C2DM 可能会导致错误 ACCOUNT_MISSING。这个错误必须处理,根据文档,以这种方式“应用程序应该要求用户打开帐户管理器并添加一个谷歌帐户。”

我想通过应用程序向用户提供这种可能性。我已经看到了两种显示此屏幕的方法:

//Intent
context.startActivity(newIntent(Settings.ACTION_ADD_ACCOUNT).putExtra(Settings.EXTRA_AUTHORITIES, new String[] {?}));

这个解决方案的问题是我尝试了几个 EXTRA_AUTHORITIES(“com.google”、“com.google.android.gsf 等),但没有一个显示任何内容,如果参数 EXTRA_AUTHORITIES 被省略,则所有电话帐户显示出来。

//Account manager    
AccountManager.get(context).addAccount("com.google", null, null, null, this, new AccountManagerCallback<Bundle>() {
public void run(AccountManagerFuture<Bundle> accountManagerHandle) {
            //TODO Handle response.
        }
    }, null);
}

此解决方案的问题在于它需要权限 MANAGE_ACCOUNTS,而用户可能不希望为此接受额外的权限。

你会如何处理这种情况?

【问题讨论】:

  • 我将使用基于 AccountManager 的方法。显然,没有人没有找到 Google 帐户的 EXTRA_AUTHORITIES 值。太糟糕了,谷歌没有提供任何提示来使他们的推送错误处理更加用户友好。

标签: android push android-c2dm account-management google-account


【解决方案1】:

对于 EXTRA_AUTHORITIES 字段,您可以使用“gmail-ls”来仅显示 Google 帐户选择器。

经过多次谷歌搜索,我在android.provider.Gmail 源代码中找到了这个常量:

public static final String AUTHORITY = "gmail-ls"

这个类不是公共 API 的一部分,因此作为一种解决方法它有点脆弱:-(.

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多