3

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,而用户可能不希望为此接受额外的权限。

你会如何处理这种情况?

4

1 回答 1

1

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

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

public static final String AUTHORITY = "gmail-ls"

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

于 2011-10-05T07:48:23.527 回答