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,而用户可能不希望为此接受额外的权限。
你会如何处理这种情况?