Account account = new Account(username, AuthConstants.ACCOUNT_TYPE);
if (am.addAccountExplicitly(account, password, null)) {
result = new Bundle();
ContentResolver.setSyncAutomatically(account, DB.AUTHORITY, true);
result.putString(AccountManager.KEY_ACCOUNT_NAME, account.name);
result.putString(AccountManager.KEY_ACCOUNT_TYPE, account.type);
return result;
}
Я использую этот код в одном из моих приложений, который работает отлично. ключом здесь является AccountAuthenticatorActivity, которое должно устанавливать пакет результатов аутентификации, который должен быть зарегистрирован (адаптер синхронизации от разработчиков Android имеет это.
также вот мой метод addAccount для сервиса accountAuthentication
@Override
public Bundle addAccount(AccountAuthenticatorResponse response,
String accountType, String authTokenType, String[] requiredFeatures,
Bundle options) {
final Intent intent = new Intent(mContext, LoginScreen.class);
intent.putExtra(LoginScreen.PARAM_AUTHTOKEN_TYPE,
authTokenType);
intent.putExtra(AccountManager.KEY_ACCOUNT_AUTHENTICATOR_RESPONSE,
response);
final Bundle bundle = new Bundle();
bundle.putParcelable(AccountManager.KEY_INTENT, intent);
return bundle;
}
UPDATE
Authenticator
Вот ссылка, которую я использовал. это хороший проект. Я верю, что это из приложения для Android last.fm. он также имеет открытый код на git, я верю. так что попробуй с этим сравнить.
РАЗРЕШЕНИЯ
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
<uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />