3

C2DM に登録すると、エラーACCOUNT_MISSINGが発生する場合があります。ドキュメントによると、このエラーは次のように処理する必要があります。「アプリケーションは、ユーザーにアカウント マネージャーを開いて Google アカウントを追加するように要求する必要があります。」

この可能性をアプリケーションからユーザーに提供したいと考えています。この画面を表示する 2 つの方法を見てきました。

//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 に答える