デバイスの所有権を取得した後、特定のアプリをキオスクモード(または画面固定モード)にロックするようにデバイスに指示するメソッドを実装しようとしています。私はデバイスの所有権を持っているので、ユーザーはそうする許可を求められません。
開発者のWebサイトから、簡単な説明から、私が試みていることを実行できることがわかります。
http://developer.Android.com/about/versions/Android-5.0.html#ScreenPinning
プログラムで:画面の固定をプログラムでアクティブにするには、アプリからstartLockTask()を呼び出します。リクエストしているアプリがデバイスの所有者でない場合、ユーザーは確認を求められます。 デバイス所有者アプリは、setLockTaskPackages()メソッドを呼び出して、ユーザーの確認手順なしでアプリを固定できるようにします。
これは、デバイス所有者アプリとして、ユーザーの確認なしで他のアプリをピン留めできることを示しています...しかし、どうすればよいかわかりません。
自分のアプリを固定モードにすることができました。
任意の助けいただければ幸いです。
setLockTaskPackages()
は、プログラムでピン留めできるアプリケーションを(パッケージ名によって)指定するために使用されますユーザーの確認なしで。 setLockTaskPackages()
は、デバイス所有者アプリから呼び出されます(おそらくDeviceAdminReceiver
のonEnabled()
メソッドで) )。
したがって、所有者のデバイスアプリでは、次のようになります。
mDPM.setLockTaskPackages("com.foo.myapp");
次に、「com.foo.myapp」アプリケーションで、次の呼び出しを自動化します。
startLockTask();
アプリケーションは、ユーザーの確認なしに、すぐにピン留めモードに入ります。
register
を使用してアプリケーションを最初にsetLockTaskPackages
しない場合、アプリケーションは固定されますが、ユーザーは最初に確認する必要があります。
アプリがsetLockTaskPackages()
を含むregistered
の場合、手動ピンとは異なる動作があることに注意してください。
stopLockTask()
を使用してアプリの固定を解除する必要があります。コメントに対する評判は十分ではありませんが、物理的なボタンを備えたデバイス(@chairmanによって言及されたSamsung Galaxy Tab Aなど)の場合、アプリケーションの強制解除を管理する1つの方法は、DeviceAdminReceiverクラスに実装することです。以下:
@Override public void onLockTaskModeExiting(Context context、Intent intent)
したがって、ユーザーがピン留めを解除したい場合は、いつでもアプリをピン留めできます;)
以下に、コードスニペットを示します。
DevicePolicyManager myDevicePolicyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
mDeviceAdminSample = new ComponentName(this, DeviceAdminSample.class);
if (myDevicePolicyManager.isDeviceOwnerApp(this.getPackageName())) {
// Device owner
String[] packages = {this.getPackageName()};
myDevicePolicyManager.setLockTaskPackages(mDeviceAdminSample, packages);
} else {
// Not a device owner - Prompt user or show error
}
if (myDevicePolicyManager.isLockTaskPermitted(this.getPackageName())) {
// Lock allowed
startLockTask();
} else {
// Lock not allowed - show error or something useful here
}