After achieving device ownership, I am trying to implement a method to instruct the device to lock any given app into kiosk mode (or screen pinning mode). Since I have device ownership, the user is not asked for the permission to do so.
From the developer website, brief description tells me that it is possible to do what I am trying:
Programmatically: To activate screen pinning programmatically, call
startLockTask() from your app. If the requesting app is not a device
owner, the user is prompted for confirmation. A device owner app can
call the setLockTaskPackages() method to enable apps to be pinnable
without the user confirmation step.
setLockTaskPackages() is used the specify which applications (through their package names) will be able to programmatically be pinned without user confirmation.
setLockTaskPackages() is called from your device owner app (most probably in your
So, in you owner device app, you'll have something like :
and then, in your "com.foo.myapp" application, you will be autorized to call :
Your application will immediately enter the Pinning mode, without any user confirmation.
If you don't first
register your application with
setLockTaskPackages, the application will be pinned but the user will have to confirm first.
Also notice that when an app is
setLockTaskPackages(), it has some different behaviours than the manual pin: