Android 4.3 から制限付きプロファイルが利用できるようになりました。カメラ、Gmail などの一部のアプリは、これらの種類のプロファイルでは利用できないことを知りました。アプリでこれらのタイプの条件を管理するにはどうすればよいですか? また、私のアプリに対応するアプリ内製品と制限付きプロファイル設定を管理するにはどうすればよいですか?
3 に答える
すでに訪問した場合でも、user370305に感謝します
http://developer.android.com/about/versions/android-4.3.html#RestrictedProfiles
を参考に改善したいと思います。
https://www.youtube.com/watch?v=pdUcANNm72o
制限付きプロファイルは、Android Jelly Bean 4.3 で導入された新機能で、アプリケーションのユーザーがタブレットを共有する際の制御を向上させることができます。
これらの制限付きプロファイルは、プライマリ ユーザー アカウントのアプリ、Google アカウントを共有しますが、制限された方法で行われます。Gmail、Play ストア、カレンダーなどにはアクセスできません。プライマリ ユーザーは、アプリケーションごとに制限を選択できます。
これらの制限を管理するために UserManager クラスが拡張されています
UserManager.getUserRestrictionsは、指定されたユーザーに課されたユーザー全体の制限を返します。
UserManager.getApplicationRestrictionsは、指定されたパッケージ名について、このユーザー用に保存されたアプリケーション制限を含むバンドルを返します。このパッケージ名を持つアプリケーションのみがこのメソッドを呼び出すことができます。
特定の設定が必要な場合は、このインテント フィルタを使用してください
<receiver android:name="GetRestrictionsReceiver">
<intent-filter>
<action android:name="android.intent.action.GET_RESTRICTION_ENTRIES "/>
</intent-filter>
</receiver>
このように返される制限エントリ リストを使用してブロードキャスト レシーバーを実装するようになりました
public class GetRestrictionsReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
final PendingResult result=goAsync();
new Thread(){
public void run(){
final Bundle extras=new Bundle();
ArrayList<RestrictionEntry> newEntries = initRestricions(context);
extras.putParcelableArrayList(Intent.EXTRA_RESTRICTIONS_LIST, newEntries);
result.setResult(Activity.RESULT_OK, null, extras);
result.finish();
}
}.start();
}
}
このような制限を公開することを選択したアプリケーションは、ACTION_GET_RESTRICTION_ENTRIES アクションを処理するレシーバーを実装することによって公開します。次に、レシーバーは、値が ArrayList である「restrictions」というエントリを含む結果バンドルを返します。
入場制限は3種類
- ブール値
- 単一選択
- 複数の選択肢
RestrictionEntry のさまざまなメソッドを使用して、さまざまな種類の制限を設定および取得できます。
制限付きプロファイルからアカウントにアクセスするには、タグに android:restrictedAccountType 属性を追加する必要があります。
<application ...
android:restrictedAccountType="com.example.account.type" >
次のコード セクションを使用して、アプリが制限付きプロファイル モードで実行されているかどうかを検出できます!!
import android.content.pm.UserInfo;
import android.os.UserHandle;
import android.os.UserManager;
public static boolean isRestrictedProfileInEffect(Context context) {
UserManager userManager = (UserManager) context.getSystemService(Context.USER_SERVICE);
UserInfo restrictedUserInfo = null;
for (UserInfo userInfo : userManager.getUsers()) {
if (userInfo.isRestricted()) {
restrictedUserInfo = userInfo;
}
}
boolean isOwner = UserHandle.myUserId() == UserHandle.USER_OWNER;
boolean isRestrictedProfileOn = restrictedUserInfo != null && !isOwner;
return isRestrictedProfileOn;
}