package xmpp.client.ui.account; import xmpp.client.Constants; import xmpp.client.R; import android.accounts.Account; import android.accounts.AccountAuthenticatorActivity; import android.accounts.AccountManager; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; public class AccountLogin extends AccountAuthenticatorActivity implements Constants { private static final String TAG = AccountLogin.class.getName(); private EditText mUserLogin; private EditText mPassword; private boolean doLogin(String user, String pass) { Bundle result = null; final Account account = new Account(user, ACCOUNT_TYPE); final AccountManager am = AccountManager.get(this); final Account[] accounts = am.getAccountsByType(ACCOUNT_TYPE); if (accounts.length == 0) { if (am.addAccountExplicitly(account, pass, null)) { result = new Bundle(); result.putString(AccountManager.KEY_ACCOUNT_NAME, account.name); result.putString(AccountManager.KEY_ACCOUNT_TYPE, account.type); setAccountAuthenticatorResult(result); return true; } else { return false; } } else { return false; } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.login); final Button b = (Button) findViewById(R.id.login_button); b.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { final String user = mUserLogin.getText().toString(); final String pass = mPassword.getText().toString(); doLogin(user, pass); finish(); } }); mUserLogin = (EditText) findViewById(R.id.login_text); mPassword = (EditText) findViewById(R.id.password_text); final AccountManager am = AccountManager.get(this); final Account[] accounts = am.getAccountsByType(ACCOUNT_TYPE); if (accounts.length > 0) { mUserLogin.setText(accounts[0].name); Log.i(TAG, "found existing Account: only One Account supported for now"); } else { mUserLogin.setText(""); } } }