2013-03-14 2 views
3

를 사용하여 계정을 선택할 수 있도록하는 방법, 권장 :이 있다면같은 관리자는 : 사용자가 같은 관리자 튜토리얼 <a href="http://developer.android.com/training/id-auth/identify.html" rel="nofollow">Remembering Your User</a>에서 대화

배열에 하나 이상의 Account, 당신은 사용자가 요청하는 정보 대화 을 제시한다 하나를 선택하십시오.

이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 나는 해결책을 가지고있다. 그러나 커뮤니티의 다른 좋은 예가 있다면, 이것은 다른 사람들이 공유하고 쉽게 재사용 할 수있는 보일러 판 코드의 것 같다.

답변

4

이 코드를 사용합니다. 최종 사용자가 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(); 
10

안드로이드 4.0 (API 레벨 14)부터 아래에 표시된 의도와 함께 활동을 시작하면 계정 선택기가 표시됩니다.

4.0보다 오래된 장치의 경우
Intent intent = AccountManager.newChooseAccountIntent(null, null, 
     new String[] { acc_type }, true, null, null, 
     null, null); 
startActivityForResult(intent, CHOOSE_ACCOUNT); 

,
사용 https://github.com/frakbot/Android-AccountChooser