I would like to just lock my app so no one can get out of it, and I was looking at Lock task mode, simultaneously following this: Android Studio, Kiosk mode, Single-Purpose Devices, Lock Task mode -lock-task-mode
my code:
Context context = getApplicationContext();
DevicePolicyManager dpm =
(DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
ComponentName adminName = getComponentName();
dpm.setLockTaskPackages(adminName, APP_PACKAGES);
ActivityOptions options = ActivityOptions.makeBasic();
//options.setLockTaskEnabled(true);
PackageManager packageManager = getPackageManager();
Intent launchIntent = packageManager.getLaunchIntentForPackage(KIOSK_PACKAGE);
if (launchIntent != null) {
startActivity(launchIntent, options.toBundle());
}
my error:
FATAL EXCEPTION: main
Process: com.gattolfo.gestionaluber, PID: 13920
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.gattolfo.gestionaluber/com.gattolfo.gestionaluber.MainActivity}: java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 pkg=com.gattolfo.gestionaluber cmp=com.gattolfo.gestionaluber/.MainActivity } from ProcessRecord{c79b603 13920:com.gattolfo.gestionaluber/u0a162} (pid=13920, uid=10162) with lockTaskMode=true
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3473)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3637)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2105)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7703)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:612)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:997)
Caused by: java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 pkg=com.gattolfo.gestionaluber cmp=com.gattolfo.gestionaluber/.MainActivity } from ProcessRecord{c79b603 13920:com.gattolfo.gestionaluber/u0a162} (pid=13920, uid=10162) with lockTaskMode=true
at android.os.Parcel.createExceptionOrNull(Parcel.java:2373)
at android.os.Parcel.createException(Parcel.java:2357)
at android.os.Parcel.readException(Parcel.java:2340)
at android.os.Parcel.readException(Parcel.java:2282)
at android.app.IActivityTaskManager$Stub$Proxy.startActivity(IActivityTaskManager.java:3696)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1745)
at android.app.Activity.startActivityForResult(Activity.java:5320)
at android.app.Activity.startActivity(Activity.java:5660)
at com.gattolfo.gestionaluber.MainActivity.loadKioskMode(MainActivity.java:137)
at com.gattolfo.gestionaluber.MainActivity.onCreate(MainActivity.java:83)
at android.app.Activity.performCreate(Activity.java:8000)
at android.app.Activity.performCreate(Activity.java:7984)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1309)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3446)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3637)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2105)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7703)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:612)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:997)
Caused by: android.os.RemoteException: Remote stack trace:
at com.android.server.wm.SafeActivityOptions.checkPermissions(SafeActivityOptions.java:245)
at com.android.server.wm.SafeActivityOptions.getOptions(SafeActivityOptions.java:125)
at com.android.server.wm.ActivityStarter.executeRequest(ActivityStarter.java:1029)
at com.android.server.wm.ActivityStarter.execute(ActivityStarter.java:675)
at com.android.server.wm.ActivityTaskManagerService.startActivityAsUser(ActivityTaskManagerService.java:1110)
W/System: A resource failed to call close.
I/Process: Sending signal. PID: 13920 SIG: 9