【发布时间】: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