I'm new to the android.accounts apis, and now I'm trying to do something with them but a seemly dummy problem occurs...
I`ve created an Authenticator for my app but did not yet implement the abstract methods. The icon of it successfully appears in the system Add a Account window, and I know that when I click it, the method addAccount in the Authenticator will be invoked.
Now I wish to do some simple thing in this method, and write codes below:
@Override
public Bundle addAccount(AccountAuthenticatorResponse response,
String accountType, String authTokenType, String[] requiredFeatures,
Bundle options) {
Log.d(LOG_TAG, "RRAuthenticator add account... ");
String accountName = "example@example.com";
Account account = new Account(accountName, accountType);
String password = "example_password";
AccountManager manager = AccountManager.get(context);
manager.addAccountExplicitly(account, password, null);
Bundle bundle = new Bundle();
bundle.putString(AccountManager.KEY_ACCOUNT_NAME, accountName);
bundle.putString(AccountManager.KEY_ACCOUNT_TYPE, accountType);
bundle.putString(AccountManager.KEY_AUTHTOKEN, "example_authtoken");
return bundle;
}
I've seen the demo of SampleSyncAdapter, and make moves like it. But I practice using these APIs by directly adding an account.
But system crashed by the line manager.addAccountExplicitly(account, password, null);
What's wrong with it?
Added later: Exception in system process. System will crash. NullPointerException throw by AccountManager. It seems the problem of the addAccountExplicitly method, as I comment this statement no crash happen.
I've worked it out.
It turns out that it's a bug in Android 2.0.
If you add an account to the AccountManager, you must also provide a SynAdapter to the account, under the Android 2.0 platform. But things are all right under Android 2.1 and above.
This is a known issue, please refer to:
http://code.google.com/p/android/issues/detail?id=5009
and
AccountManager without a SyncAdapter?