アカウントの種類は「mypackage.account」で、コンテンツ権限は「mypackage」です。のService
実装を提供する がありAbstractAccountAuthenticator
、addAccount
メソッドは次のように実装されます。
/**
* The user has requested to add a new account to the system. We return an intent that will launch our login
* screen if the user has not logged in yet, otherwise our activity will just pass the user's credentials on to
* the account manager.
*/
@Override
public Bundle addAccount(AccountAuthenticatorResponse response, String account_type, String auth_token_type,
String[] required_features, Bundle options) throws NetworkErrorException {
final Intent intent = new Intent(_context, ConnectAccountActivity.class);
intent.putExtra(AccountManager.KEY_ACCOUNT_AUTHENTICATOR_RESPONSE, response);
final Bundle reply = new Bundle();
reply.putParcelable(AccountManager.KEY_INTENT, intent);
return reply;
}
私は提供しますauthenticator.xml
<account-authenticator xmlns:android="http://schemas.android.com/apk/res/android"
android:accountType="mypackage.account"
android:icon="@drawable/ic_launcher"
android:smallIcon="@drawable/ic_launcher"
android:label="@string/app_name"
android:accountPreferences="@xml/account_preferences" />
Service
これを次のAndroidManifest.xml
ように定義します。
<!-- Account authentication service that provides the methods for authenticating KeepandShare accounts to the
AccountManager framework -->
<service android:exported="true" android:name=".authenticator.AccountAuthenticatorService" android:process=":auth" tools:ignore="ExportedService">
<intent-filter>
<action android:name="android.accounts.AccountAuthenticator"/>
</intent-filter>
<meta-data android:name="android.accounts.AccountAuthenticator" android:resource="@xml/authenticator"/>
</service>
これでセットアップは完了です。新しいアカウントを追加するアクションを使用して、デバイスに自分のアカウント タイプのアカウントのリストを表示する画面が必要な場合は、次のようなアカウントの追加アクションがあります。
final Intent intent = new Intent(Settings.ACTION_ADD_ACCOUNT);
intent.putExtra(Settings.EXTRA_AUTHORITIES, new String[]{ "mypackage" });
startActivity(intent);
この時点で、「mypackage.account」と「anotherpackage.account」をオプションとして表示するアカウント タイプ ピッカーが表示されます。(「anotherpackage.account」は私が取り組んでいる別のアプリで定義されています)これは意図した動作のようには見えません。両方のアプリで定義されている権限が異なることを約 20 回確認しましたが、違います。誰かが私に欠けているものを見せてもらえますか?