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