モケラ

Tech Sheets

mokelab

アカウント選択ダイアログを表示する

最終更新日:2015-07-01

追加したアカウントを取得するで追加済みのアカウント一覧は取得できましたが、これを元に選択ダイアログを作ったりするのは面倒です。

API Level 14より、これを簡単にやってくれる仕組みが追加されています。

ここまで実装したものはここにあります。

// Choose
Intent it = AccountManager.newChooseAccountIntent(null, null, new String[]{"com.mokelab.accountsample"},
        // true : shows dialog even if number of registered account is 1.
        // false : if number of registered account is 1, API returns it immediately(dialog is not displayed).
        true,
        null, null, null, null);
startActivityForResult(it, REQUEST_CHOOSE_ACCOUNT);

第3引数にはアカウントの種類を配列で渡します。

第4引数は、trueを設定するとアカウント選択のダイアログが必ずでます。falseを設定し、登録されているアカウントが1つの場合はダイアログが表示されず、自動で登録されているアカウントが選択されます。

startActivityForResult()なので結果はonActivityResult()で受け取ります。結果はアカウント名と種類の2つだけなのでコードの紹介のみにします。

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode != Activity.RESULT_OK) { return; }

    switch (requestCode) {
    case REQUEST_CHOOSE_ACCOUNT: {
        String name = data.getStringExtra(AccountManager.KEY_ACCOUNT_NAME);
        String type = data.getStringExtra(AccountManager.KEY_ACCOUNT_TYPE);

        Log.v("ChooseAccount", "name=" + name + " / type=" + type);
        return;
    }
    }
    super.onActivityResult(requestCode, resultCode, data);
}

一覧に戻る