Back to project page SyncFrameworkAndroid.
The source code is released under:
Apache License
If you think the Android project SyncFrameworkAndroid listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
package pl.selvin.android.listsyncsample.authenticator; /* ww w. j a va 2 s. co m*/ import android.accounts.Account; import android.accounts.AccountAuthenticatorActivity; import android.accounts.AccountManager; import android.app.Dialog; import android.app.ProgressDialog; import android.content.ContentResolver; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.text.TextUtils; import android.util.Log; import android.view.View; import android.view.Window; import android.widget.EditText; import android.widget.TextView; import pl.selvin.android.listsyncsample.Constants; import pl.selvin.android.listsyncsample.R; import pl.selvin.android.listsyncsample.authenticator.Common.IAuthenticationResult; public class AuthenticatorActivity extends AccountAuthenticatorActivity implements IAuthenticationResult { public static final String PARAM_USERNAME = "username"; public static final String PARAM_AUTHTOKEN_TYPE = "authtokenType"; private static final String TAG = "AuthenticatorActivity"; private final Handler mHandler = new Handler(); private AccountManager mAccountManager; private Thread mAuthThread; private String mAuthtokenType; private TextView mMessage; private String mUsername; private EditText mUsernameEdit; /** * {@inheritDoc} */ @Override public void onCreate(Bundle icicle) { Log.i(TAG, "onCreate(" + icicle + ")"); super.onCreate(icicle); mAccountManager = AccountManager.get(this); Log.i(TAG, "loading data from Intent"); final Intent intent = getIntent(); mUsername = intent.getStringExtra(PARAM_USERNAME); mAuthtokenType = intent.getStringExtra(PARAM_AUTHTOKEN_TYPE); requestWindowFeature(Window.FEATURE_LEFT_ICON); setContentView(R.layout.login_activity); getWindow().setFeatureDrawableResource(Window.FEATURE_LEFT_ICON, android.R.drawable.ic_dialog_alert); mMessage = (TextView) findViewById(R.id.message); mUsernameEdit = (EditText) findViewById(R.id.username_edit); mUsernameEdit.setText(mUsername); mMessage.setText(getMessage()); } /* * {@inheritDoc} */ @Override protected Dialog onCreateDialog(int id) { final ProgressDialog dialog = new ProgressDialog(this); dialog.setMessage(getText(R.string.ui_activity_authenticating)); dialog.setIndeterminate(true); dialog.setCancelable(true); dialog.setOnCancelListener(new DialogInterface.OnCancelListener() { public void onCancel(DialogInterface dialog) { Log.i(TAG, "dialog cancel has been invoked"); if (mAuthThread != null) { mAuthThread.interrupt(); finish(); } } }); return dialog; } public void handleLogin(View view) { mUsername = mUsernameEdit.getText().toString(); if (TextUtils.isEmpty(mUsername)) { mMessage.setText(getMessage()); } else { showDialog(0); // Start authenticating... mAuthThread = Common.attemptAuth(mUsername, mHandler, this); } } public void onAuthenticationResult(boolean result) { dismissDialog(0); final Account account = new Account(mUsername, Constants.ACCOUNT_TYPE); mAccountManager.addAccountExplicitly(account, "*", null); mAccountManager.setAuthToken(account, Constants.AUTHTOKEN_TYPE, Common.getAuthtoken()); ContentResolver .setSyncAutomatically(account, Constants.AUTHORITY, true); final Intent intent = new Intent(); intent.putExtra(AccountManager.KEY_ACCOUNT_NAME, mUsername); intent.putExtra(AccountManager.KEY_ACCOUNT_TYPE, Constants.ACCOUNT_TYPE); if (mAuthtokenType != null && mAuthtokenType.equals(Constants.AUTHTOKEN_TYPE)) { intent.putExtra(AccountManager.KEY_AUTHTOKEN, Common.getAuthtoken()); } setAccountAuthenticatorResult(intent.getExtras()); setResult(RESULT_OK, intent); finish(); } private CharSequence getMessage() { getString(R.string.label); if (TextUtils.isEmpty(mUsername)) { return getText(R.string.login_activity_newaccount_text); } return null; } }