QuickStep launcher (com.android.launcher3) doesn't start after un-hiding through device admin

1.1k views Asked by At

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?

0

There are 0 answers