Android 4.3 以降で制限付きプロファイルをサポートしようとすると問題が発生します。オーセンティケーターをセットアップしました:
<service
android:name=".account.AuthenticatorService"
android:permission="com.example.MANAGE_ACCOUNTS">
<intent-filter>
<action android:name="android.accounts.AccountAuthenticator"/>
</intent-filter>
<meta-data
android:name="android.accounts.AccountAuthenticator"
android:resource="@xml/authenticator" />
</service>
そして、authenticator.xml で:
<account-authenticator
xmlns:android="http://schemas.android.com/apk/res/android"
android:accountType="com.example"
android:icon="@drawable/ic_launcher"
android:smallIcon="@drawable/ic_launcher"
android:label="@string/label"
/>
利用可能なアカウントのリストを取得し、それらのタイプを出力します。
AccountManager am = AccountManager.get(this);
accounts = am.getAccounts();
for (Account account : Accounts) {
Log.d(TAG, account.type);
}
メインユーザーとしてログインしてアプリを実行すると、すべてのGoogleアカウント、githubアカウント、Dropboxアカウント、および「com.example」アカウントを取得します。次に、制限付きアカウントで試してみます。
まず、AndroidManifest に追加します。
<application
.
.
.
android:restrictedAccountType="com.example">
制限されたユーザーとしてログインしてアプリを実行すると、何も得られません。リストにアカウントがありません。を に変更するrestrictedAccountType
とcom.google
、すべての Google アカウントのリストが表示されます。
ユーザーが「実際の」ユーザーである場合は問題なく機能するため、アカウント自体には問題はありません...制限されたプロファイルで使用できるアカウントを登録するために何か追加する必要がありますか? この機能に関するドキュメントはせいぜい不足しています...