I'm experimenting with Android AccountManager
.
I have an Account authentication service that shows UI to enter username/password.
I go to Settings/Accounts/Add Account, choose my new account type and I'm presented with the UI.
When I click OK I get the following error
04-24 14:48:29.334: E/AndroidRuntime(386): java.lang.SecurityException:
caller uid 10035 is different than the authenticator's uid
The only method of MyAccountAuthenticationService:
@Override
public IBinder onBind(Intent intent) {
return new MyAccountAuthenticator(this).getIBinder();
}
MyAccountAuthenticator:
@Override
public Bundle addAccount(AccountAuthenticatorResponse response,
String accountType, String authTokenType, String[] requiredFeatures,
Bundle options) throws NetworkErrorException {
final Intent intent = new Intent(context, MyAccountCreatorActivity.class);
intent.putExtra(AccountManager.KEY_ACCOUNT_AUTHENTICATOR_RESPONSE, response);
final Bundle bundle = new Bundle();
bundle.putParcelable(AccountManager.KEY_INTENT, intent);
return bundle;
}
Fragment of MyAccountCreatorActivity
's onClick
AccountManager accManager = AccountManager.get(this);
Account newAccount = new Account(email, MyAccountAuthenticator.ACCOUNT_TYPE);
accManager.setPassword(newAccount, password);
Exception is thrown on setPassword
. I already required all the accounting permissions. I'm not sure about what could be causing this. If you need more code/information please ask.
Thank you.
Seems obvious, but you will also see this error if your authenticator service has not been defined in AndroidManifest.xml. For example:
<service android:name="your.AuthService">
<intent-filter>
<action android:name="android.accounts.AccountAuthenticator" />
</intent-filter>
<meta-data android:name="android.accounts.AccountAuthenticator"
android:resource="@xml/authenticator" />
</service>
Thanks to @imran khan, I discovered that my constant value didn't match "exactly" what was in the authenticator XML definition
In my case, I got this error when I ran two different flavors on the same device. The second one was trying to access the same account as the first, which caused the error.
In my case I accidently defined AuthenticatorService in the Manifest outside the <application>
tags. Moving the declaration inside <application>
fixed the issue. Hope will help someone.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With