OK, next problem in this never ending saga: I managed to solve my resource issue and then the next issue that came up after that, but now I'm stuck again.
I'm trying to add an account using the Dev Tool / Account Tester. I can select my Account Type but when I choose the Add button, I get the following errors (warnings actually, but my account activity never displays): ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ I/ActivityManager( 58): Starting activity: Intent { cmp=MonoSyncSig.MonoSyncSi g/monosyncsig.datamanagement.AuthenticatorActivity (has extras) } W/ActivityManager( 58): Permission denied: checkComponentPermission() reqUid=1 0038 W/ActivityManager( 58): Permission Denial: starting Intent { cmp=MonoSyncSig.M onoSyncSig/monosyncsig.datamanagement.AuthenticatorActivity (has extras) } from ProcessRecord{450b0120 1041:com.android.development/10008} (pid=1041, uid=10008) requires null ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ My Authenticator AddAccount method is as listed previously. Here is my AuthenticatorActivity code: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ using System; using Android.Accounts; using Android.App; using Android.Content; using Android.OS; using Android.Provider; using Android.Runtime; using Android.Views; using Android.Widget; using Java.Lang; namespace MonoSyncSig.DataManagement { [Activity(Label = "MonoSyncSig Sign In", ExcludeFromRecents = true, Theme = "@android:style/Theme.Dialog")] public class AuthenticatorActivity : AccountAuthenticatorActivity { public static string PARAM_CONFIRMCREDENTIALS = "confirmCredentials"; public static string PARAM_PASSWORD = "password"; public static string PARAM_USERNAME = "username"; public static string PARAM_AUTHTOKEN_TYPE = "authtokenType"; public static string ACCOUNT_TYPE = "monosyncsig.account"; public static string AUTHTOKEN_TYPE = "monosyncsig"; private AccountManager _accountManager = null; //private Thread _authThread = null; private string _authtoken = null; private string _authtokenType = null; private bool _confirmCredentials = false; private Handler _handler = new Handler(); private TextView _message = null; private string _password = null; private EditText _passwordEdit; private bool _requestNewAccount = false; private string _username = null; private EditText _usernameEdit = null; protected override void OnCreate(Bundle bundle) { if (Android.Util.Log.IsLoggable("MonoSyncSig", Android.Util.LogPriority.Debug)) Android.Util.Log.WriteLine(Android.Util.LogPriority.Debug, "MonoSyncSig", "AuthenticatorActivity::OnCreate"); base.OnCreate(bundle); _accountManager = AccountManager.Get(this); Intent intent = this.Intent; if (intent.HasExtra(PARAM_USERNAME)) { _username = intent.GetStringExtra(PARAM_USERNAME); } _requestNewAccount = (_username == null); if (intent.HasExtra(PARAM_AUTHTOKEN_TYPE)) { _authtokenType = intent.GetStringExtra(PARAM_AUTHTOKEN_TYPE); } if (intent.HasExtra(PARAM_CONFIRMCREDENTIALS)) { _confirmCredentials = intent.GetBooleanExtra(PARAM_CONFIRMCREDENTIALS, false); } // TODO: RequestWindowFeature(Window.FEATURE_LEFT_ICON); SetContentView(Resource.Layout.Login); // TODO: getWindow().setFeatureDrawableResource(Window.FEATURE_LEFT_ICON, android.R.drawable.ic_dialog_alert); _message = (TextView)FindViewById(Resource.Id.message); _usernameEdit = (EditText)FindViewById(Resource.Id.username_edit); _passwordEdit = (EditText)FindViewById(Resource.Id.password_edit); if (_username != null) { _usernameEdit.SetText(_username, TextView.BufferType.Normal); } _message.SetText(GetMessage(), TextView.BufferType.Normal); } protected override Dialog OnCreateDialog(int id) { if (Android.Util.Log.IsLoggable("MonoSyncSig", Android.Util.LogPriority.Debug)) Android.Util.Log.WriteLine(Android.Util.LogPriority.Debug, "MonoSyncSig", "AuthenticatorActivity::OnCreateDialog"); ProgressDialog dialog = new ProgressDialog(this); dialog.SetMessage(GetText(Resource.String.ui_activity_authenticating)); dialog.Indeterminate = true; dialog.SetCancelable(true); // TODO: dialog.SetOnCancelListener(); return dialog; } public void HandleLogin(View view) { if (_requestNewAccount) { _username = _usernameEdit.Text; } _password = _passwordEdit.Text; if (_username == string.Empty || _password == string.Empty) { _message.SetText(GetMessage(), TextView.BufferType.Normal); } else { ShowProgress(); // TODO: start login/authentication thread } } protected void FinishConfirmCredentials(bool result) { Account account = new Account(_username, ACCOUNT_TYPE); _accountManager.SetPassword(account, _password); Intent intent = new Intent(); intent.PutExtra(AccountManager.KeyBooleanResult, result); SetAccountAuthenticatorResult(intent.Extras); SetResult(Result.Ok, intent); Finish(); } protected void FinishLogin() { Account account = new Account(_username, ACCOUNT_TYPE); if (_requestNewAccount) { _accountManager.AddAccountExplicitly(account, _password, null); ContentResolver.SetSyncAutomatically(account, ContactsContract.Authority, true); } else { _accountManager.SetPassword(account, _password); } Intent intent = new Intent(); _authtoken = _password; intent.PutExtra(AccountManager.KeyAccountName, _username); intent.PutExtra(AccountManager.KeyAccountType, ACCOUNT_TYPE); if (_authtokenType != null && _authtokenType == AUTHTOKEN_TYPE) { intent.PutExtra(AccountManager.KeyAuthtoken, _authtoken); } SetAccountAuthenticatorResult(intent.Extras); SetResult(Result.Ok, intent); Finish(); } public void OnAuthenticationResult(bool result) { //if (Android.Util.Log.IsLoggable("MonoSyncSig", Android.Util.LogPriority.Debug)) // Android.Util.Log.WriteLine(Android.Util.LogPriority.Debug, "MonoSyncSig", "AuthenticatorActivity::OnAuthenticationResult"); HideProgress(); if (result) { if (!_confirmCredentials) { FinishLogin(); } else { FinishConfirmCredentials(true); } } else { if (_requestNewAccount) { _message.SetText(GetText(Resource.String.login_activity_loginfail_text_both), TextView.BufferType.Normal); } else { _message.SetText(GetText(Resource.String.login_activity_loginfail_text_pwonly), TextView.BufferType.Normal); } } } private string GetMessage() { GetString(Resource.String.ApplicationName); if (_username == null) { return GetText(Resource.String.login_activity_newaccount_text); } if (_password == null) { return GetText(Resource.String.login_activity_loginfail_text_pwmissing); } return null; } protected void ShowProgress() { ShowDialog(0); } protected void HideProgress() { DismissDialog(0); } } } ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ I'm expecting to see my login/new account activity displayed but it just isn't happening. Any ideas? Any help would be GREATLY appreciated. Thanks -- View this message in context: http://mono-for-android.1047100.n5.nabble.com/Sync-Adapter-and-Account-Authenticator-Services-tp4623034p4636535.html Sent from the Mono for Android mailing list archive at Nabble.com. _______________________________________________ Monodroid mailing list Monodroid@lists.ximian.com UNSUBSCRIBE INFORMATION: http://lists.ximian.com/mailman/listinfo/monodroid