AccountManager のチュートリアルユーザーの記憶 では、次のことをお勧めします。
配列に複数ある場合
Account
は、ユーザーに 1 つを選択するよう求めるダイアログを表示する必要があります。
これを行う最善の方法は何ですか?私は解決策を考えていますが、コミュニティから他の良い例があれば、これは他の人が共有して簡単に再利用できる種類のボイラープレート コードのようです。
AccountManager のチュートリアルユーザーの記憶 では、次のことをお勧めします。
配列に複数ある場合
Account
は、ユーザーに 1 つを選択するよう求めるダイアログを表示する必要があります。
これを行う最善の方法は何ですか?私は解決策を考えていますが、コミュニティから他の良い例があれば、これは他の人が共有して簡単に再利用できる種類のボイラープレート コードのようです。
Android 4.0 (API レベル 14) 以降では、以下に示すインテントでアクティビティを起動すると、アカウント チューザーが表示されます。
Intent intent = AccountManager.newChooseAccountIntent(null, null,
new String[] { acc_type }, true, null, null,
null, null);
startActivityForResult(intent, CHOOSE_ACCOUNT);
4.0 より古いデバイスの場合は、https://github.com/frakbot/Android-AccountChooser
を
使用してください
私はこのコードを使用します。ダイアログが表示されるので、エンドユーザーはいずれかの Google アカウントを選択できます。
ArrayList<String> gUsernameList = new ArrayList<String>();
AccountManager accountManager = AccountManager.get(this);
Account[] accounts = accountManager.getAccountsByType("com.google");
gUsernameList.clear();
//loop
for (Account account : accounts) {
gUsernameList.add(account.name);
}
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Choose you gmail-account");
ListView lv = new ListView(this);
ArrayAdapter<String> adapter = new ArrayAdapter<String>
(this,android.R.layout.simple_list_item_1, android.R.id.text1,
gUsernameList);
lv.setAdapter(adapter);
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent,View view,int position,long
id)
{
Log.d("You-select-gmail-account", gUsernameList.get(position)) );
}
});
builder.setView(lv);
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
dialog.dismiss();
}
});
final Dialog dialog = builder.create();
dialog.show();