ChooseAccountActivity.java revision 3326920329cecb57c7ff1fc5c6add5c98aab9ed9
13326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana/* 23326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana * Copyright (C) 2009 The Android Open Source Project 33326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana * 43326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana * Licensed under the Apache License, Version 2.0 (the "License"); 53326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana * you may not use this file except in compliance with the License. 63326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana * You may obtain a copy of the License at 73326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana * 83326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana * http://www.apache.org/licenses/LICENSE-2.0 93326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana * 103326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana * Unless required by applicable law or agreed to in writing, software 113326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana * distributed under the License is distributed on an "AS IS" BASIS, 123326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 133326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana * See the License for the specific language governing permissions and 143326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana * limitations under the License. 153326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana */ 163326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintanapackage android.accounts; 173326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana 183326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintanaimport android.app.ListActivity; 193326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintanaimport android.os.Bundle; 203326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintanaimport android.os.Parcelable; 213326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintanaimport android.widget.ArrayAdapter; 223326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintanaimport android.widget.ListView; 233326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintanaimport android.view.View; 243326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintanaimport android.util.Log; 253326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana 263326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintanapublic class ChooseAccountActivity extends ListActivity { 273326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana private static final String TAG = "AccountManager"; 283326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana private Parcelable[] mAccounts = null; 293326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana private AccountManagerResponse mAccountManagerResponse = null; 303326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana private Bundle mResult; 313326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana 323326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana @Override 333326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana public void onCreate(Bundle savedInstanceState) { 343326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana super.onCreate(savedInstanceState); 353326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana 363326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana if (savedInstanceState == null) { 373326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana mAccounts = getIntent().getParcelableArrayExtra(Constants.ACCOUNTS_KEY); 383326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana mAccountManagerResponse = 393326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana getIntent().getParcelableExtra(Constants.ACCOUNT_MANAGER_RESPONSE_KEY); 403326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana } else { 413326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana mAccounts = savedInstanceState.getParcelableArray(Constants.ACCOUNTS_KEY); 423326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana mAccountManagerResponse = 433326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana savedInstanceState.getParcelable(Constants.ACCOUNT_MANAGER_RESPONSE_KEY); 443326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana } 453326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana 463326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana String[] mAccountNames = new String[mAccounts.length]; 473326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana for (int i = 0; i < mAccounts.length; i++) { 483326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana mAccountNames[i] = ((Account) mAccounts[i]).mName; 493326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana } 503326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana 513326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana // Use an existing ListAdapter that will map an array 523326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana // of strings to TextViews 533326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana setListAdapter(new ArrayAdapter<String>(this, 543326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana android.R.layout.simple_list_item_1, mAccountNames)); 553326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana getListView().setTextFilterEnabled(true); 563326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana } 573326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana 583326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana protected void onListItemClick(ListView l, View v, int position, long id) { 593326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana Account account = (Account) mAccounts[position]; 603326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana Log.d(TAG, "selected account " + account); 613326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana Bundle bundle = new Bundle(); 623326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana bundle.putString(Constants.ACCOUNT_NAME_KEY, account.mName); 633326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana bundle.putString(Constants.ACCOUNT_TYPE_KEY, account.mType); 643326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana mResult = bundle; 653326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana finish(); 663326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana } 673326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana 683326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana public void finish() { 693326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana if (mAccountManagerResponse != null) { 703326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana if (mResult != null) { 713326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana mAccountManagerResponse.onResult(mResult); 723326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana } else { 733326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana mAccountManagerResponse.onError(Constants.ERROR_CODE_CANCELED, "canceled"); 743326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana } 753326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana } 763326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana super.finish(); 773326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana } 783326920329cecb57c7ff1fc5c6add5c98aab9ed9Fred Quintana} 79