I have a custom kisok app and a device admin app (device policy manager) running in android 10. When the kiosk app launches, the device-admin app disable various components of the system. One of the components that is disabled is the built-in android launcher. It is disabled through:
devicePolicyManager.setApplicationHidden(adminComponent, "com.android.launcher3", true)
The problem I face is when I exit from the kiosk mode application and then enable the built-in launcher:
devicePolicyManager.setApplicationHidden(adminComponent, "com.android.launcher3", false)
After, this, when the default launcher tries to open, it crashes saying that various permissions are missing:
11-23 16:30:57.660 750 1962 W ActivityManager: Permission Denial: setShelfHeight() from pid=9846, uid=10091 requires android.permission.STATUS_BAR
11-23 16:30:57.662 9846 9870 E AndroidRuntime: FATAL EXCEPTION: UiThreadHelper
11-23 16:30:57.662 9846 9870 E AndroidRuntime: Process: com.android.launcher3, PID: 9846
11-23 16:30:57.662 9846 9870 E AndroidRuntime: java.lang.SecurityException: Permission Denial: setShelfHeight() from pid=9846, uid=10091 requires android.permission.STATUS_BAR
11-23 16:30:57.662 9846 9870 E AndroidRuntime: at android.os.Parcel.createException(Parcel.java:2071)
11-23 16:30:57.662 9846 9870 E AndroidRuntime: at android.os.Parcel.readException(Parcel.java:2039)
11-23 16:30:57.662 9846 9870 E AndroidRuntime: at android.os.Parcel.readException(Parcel.java:1987)
11-23 16:30:57.662 9846 9870 E AndroidRuntime: at android.view.IWindowManager$Stub$Proxy.setShelfHeight(IWindowManager.java:3717)
11-23 16:30:57.662 9846 9870 E AndroidRuntime: at com.android.systemui.shared.system.WindowManagerWrapper.setShelfHeight(WindowManagerWrapper.java:148)
11-23 16:30:57.662 9846 9870 E AndroidRuntime: at com.android.launcher3.uioverrides.RecentsUiFactory.lambda$static$0(RecentsUiFactory.java:62)
11-23 16:30:57.662 9846 9870 E AndroidRuntime: at com.android.launcher3.uioverrides.-$$Lambda$RecentsUiFactory$kLTnyxU1D0UyyR3cYPdkjFJ_dRk.execute(Unknown Source:0)
11-23 16:30:57.662 9846 9870 E AndroidRuntime: at com.android.launcher3.util.UiThreadHelper$UiCallbacks.handleMessage(UiThreadHelper.java:88)
11-23 16:30:57.662 9846 9870 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:103)
11-23 16:30:57.662 9846 9870 E AndroidRuntime: at android.os.Looper.loop(Looper.java:214)
11-23 16:30:57.662 9846 9870 E AndroidRuntime: at android.os.HandlerThread.run(HandlerThread.java:67)
11-23 16:30:57.662 9846 9870 E AndroidRuntime: Caused by: android.os.RemoteException: Remote stack trace:
11-23 16:30:57.662 9846 9870 E AndroidRuntime: at com.android.server.am.ActivityManagerService.enforceCallingPermission(ActivityManagerService.java:6016)
11-23 16:30:57.662 9846 9870 E AndroidRuntime: at com.android.server.am.ActivityManagerService$LocalService.enforceCallingPermission(ActivityManagerService.java:18224)
11-23 16:30:57.662 9846 9870 E AndroidRuntime: at com.android.server.wm.ActivityTaskManagerService.enforceCallerIsRecentsOrHasPermission(ActivityTaskManagerService.java:3542)
11-23 16:30:57.662 9846 9870 E AndroidRuntime: at com.android.server.wm.ActivityTaskManagerService.access$500(ActivityTaskManagerService.java:307)
11-23 16:30:57.662 9846 9870 E AndroidRuntime: at com.android.server.wm.ActivityTaskManagerService$LocalService.enforceCallerIsRecentsOrHasPermission(ActivityTaskManagerService.java:6321)
11-23 16:30:57.662 9846 9870 E AndroidRuntime:
11-23 16:30:57.672 750 9923 I DropBoxManagerService: add tag=system_app_crash isTagEnabled=true flags=0x2
11-23 16:30:57.672 750 2052 W ActivityManager: Permission Denial: registerTaskStackListener() from pid=9846, uid=10091 requires android.permission.MANAGE_ACTIVITY_STACKS
11-23 16:30:57.673 9846 9846 W TaskStackChangeListeners: Failed to call registerTaskStackListener
11-23 16:30:57.673 9846 9846 W TaskStackChangeListeners: java.lang.SecurityException: Permission Denial: registerTaskStackListener() from pid=9846, uid=10091 requires android.permission.MANAGE_ACTIVITY_STACKS
11-23 16:30:57.673 9846 9846 W TaskStackChangeListeners: at android.os.Parcel.createException(Parcel.java:2071)
11-23 16:30:57.673 9846 9846 W TaskStackChangeListeners: at android.os.Parcel.readException(Parcel.java:2039)
11-23 16:30:57.673 9846 9846 W TaskStackChangeListeners: at android.os.Parcel.readException(Parcel.java:1987)
11-23 16:30:57.673 9846 9846 W TaskStackChangeListeners: at android.app.IActivityTaskManager$Stub$Proxy.registerTaskStackListener(IActivityTaskManager.java:5903)
11-23 16:30:57.673 9846 9846 W TaskStackChangeListeners: at com.android.systemui.shared.system.TaskStackChangeListeners.addListener(TaskStackChangeListeners.java:63)
11-23 16:30:57.673 9846 9846 W TaskStackChangeListeners: at com.android.systemui.shared.system.ActivityManagerWrapper.registerTaskStackListener(ActivityManagerWrapper.java:367)
11-23 16:30:57.673 9846 9846 W TaskStackChangeListeners: at com.android.quickstep.views.RecentsView.onAttachedToWindow(RecentsView.java:408)
11-23 16:30:57.673 9846 9846 W TaskStackChangeListeners: at android.view.View.dispatchAttachedToWindow(View.java:19642)
11-23 16:30:57.673 9846 9846 W TaskStackChangeListeners: at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3490)
11-23 16:30:57.673 9846 9846 W TaskStackChangeListeners: at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3497)
11-23 16:30:57.673 9846 9846 W TaskStackChangeListeners: at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3497)
11-23 16:30:57.673 9846 9846 W TaskStackChangeListeners: at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3497)
11-23 16:30:57.673 9846 9846 W TaskStackChangeListeners: at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3497)
11-23 16:30:57.673 9846 9846 W TaskStackChangeListeners: at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3497)
11-23 16:30:57.673 9846 9846 W TaskStackChangeListeners: at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2103)
11-23 16:30:57.673 9846 9846 W TaskStackChangeListeners: at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1791)
11-23 16:30:57.673 9846 9846 W TaskStackChangeListeners: at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7867)
11-23 16:30:57.673 9846 9846 W TaskStackChangeListeners: at android.view.Choreographer$CallbackRecord.run(Choreographer.java:967)
11-23 16:30:57.673 9846 9846 W TaskStackChangeListeners: at android.view.Choreographer.doCallbacks(Choreographer.java:791)
11-23 16:30:57.673 9846 9846 W TaskStackChangeListeners: at android.view.Choreographer.doFrame(Choreographer.java:726)
11-23 16:30:57.673 9846 9846 W TaskStackChangeListeners: at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:952)
11-23 16:30:57.673 9846 9846 W TaskStackChangeListeners: at android.os.Handler.handleCallback(Handler.java:883)
11-23 16:30:57.673 9846 9846 W TaskStackChangeListeners: at android.os.Handler.dispatchMessage(Handler.java:100)
11-23 16:30:57.673 9846 9846 W TaskStackChangeListeners: at android.os.Looper.loop(Looper.java:214)
11-23 16:30:57.673 9846 9846 W TaskStackChangeListeners: at android.app.ActivityThread.main(ActivityThread.java:7386)
11-23 16:30:57.673 9846 9846 W TaskStackChangeListeners: at java.lang.reflect.Method.invoke(Native Method)
11-23 16:30:57.673 9846 9846 W TaskStackChangeListeners: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
11-23 16:30:57.673 9846 9846 W TaskStackChangeListeners: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:980)
11-23 16:30:57.673 750 2053 W ActivityTaskManager: Force finishing activity com.android.launcher3/.Launcher
Also, the launcher3 application has not declared those missing permissions in its AndroidManifest.
So, the question is, how can I unhide the package in such a way that those permission requirements are met?