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 パーミッションが必要なことであり、ユーザーはおそらくそのためだけに追加のパーミッションを受け入れたくないでしょう。
この状況にどのように対処しますか?