1

に電話したら

AccountManager.get(this).getAuthTokenByFeatures(Constants.ACCOUNT_TYPE, Constants.AUTHTOKEN_TYPE, null, this, null, null, 
                new AccountManagerCallback<Bundle>()

これは、オーバーライドされた addAccount メソッドの AbstractAccountAuthenticator の実装で設定されています

アカウントが設定されていない場合は、新しいアカウントを追加するためのアクティビティが使用されますが、複数のアカウントがある場合は、選択できるアカウントのリストが表示されます。Android システムに組み込まれている Accounts & Sync オプションをより厳密に表すために、まだ作成していない AccountsListActivity を介してこのリストをカスタマイズしたいと考えています。

アカウントのリストが同じ方法で返されたときに何が起こるかを処理するアクティビティを設定することは可能ですか?どのようにすればよいですか? クラスの書き方は知っている アカウント名の単純なリストの代わりにクラスを呼び出す方法を知る必要がある

そうでない場合、どのような選択肢がありますか?

4

1 に答える 1

3

あなたの質問が正しいかどうかはよくわかりませんが、アカウントのリストから選択する可能性を実装したいだけなら、いくつかのオプションがあります.

オプション1

私が行ったのは、アカウントを含む単純なダイアログ ポップアップです。次のように、アクティビティ (アカウントを取得するために使用するアクティビティ) で onCreateDialog をオーバーライドします。

@Override
protected Dialog onCreateDialog(int id) {
    switch (id) {
    case DIALOG_ACCOUNTS:
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("Title");
        final int size = accounts.length;

        String[] names = new String[size];
        for (int i = 0; i < size; i++) {
            names[i] = accounts[i].name;
        }
        builder.setItems(names, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                // Stuff to do when the account is selected by the user
                handleSelectedAccount(accounts[which]);
            }
        });
        return builder.create();
    }
    return null;
}

注: accounts は、取得したアカウントのリストです。

ポップアップを表示するには、showDialog(DIALOG_ACCOUNTS) を呼び出すだけです。

オプション 2

Android 4.0 以降、AccountManager は次の方法でアカウント選択用のアクティビティを生成できます。

Intent intent = AccountManager.newChooseAccountIntent(null, null,
                new String[] { "com.google" }, false, null, null, null,
                null);

ここでこのソリューションを見つけました:http://blog.tomtasche.at/2013/05/google-oauth-on-android-using.html

多分私はあなたを助けることができます;)

于 2013-06-20T10:57:02.047 に答える