When you need a device to run only one application – for example a point‑of‑sale app, a digital signage player, or a classroom learning tool – Android’s Device Owner (sometimes called kiosk mode) is the cleanest solution. Unlike a simple screen‑pinning lock, Device Owner disables the status bar, home button, recent‑apps switcher, and most system settings, making it hard for a casual user to break out of the intended app.
Most tutorials assume you have a rooted device or a custom ROM, but Android provides a native way to claim Device Owner via ADB. The process works on Android 5.0 (Lollipop) and newer, though the exact UI wording may differ between manufacturers.
platform-tools (ADB) on your PC. You can get it from the Android developer site; the zip is self‑contained and does not require installation.The app you want to lock must be a device‑owner‑compatible package. Most modern apps that are intended for enterprise deployment already support it, but if you are using a regular Play Store app you can still force it, though some features (like disabling the status bar) may be limited.
adb install path/to/app.apk.adb shell pm list packages | grep part‑of‑name or by looking at the Play Store URL.For this tutorial we’ll use the example package com.example.kiosk. Replace it with the actual package name of your app.
Device Owner can only be set on a device that has no existing user data. The safest way is to perform a factory reset.
Do not complete the setup wizard yet; stop at the screen that asks you to connect to Wi‑Fi.
Android allows ADB connections even before the first user is created, as long as USB debugging is enabled in the developer options. Because the device is fresh, you need to enable it via a special shortcut:
adb devices. You should see the device listed as device. If it shows unauthorized, check the phone for a permission dialog and tap “Allow”.If the device does not show up, verify the USB cable, try a different port, and make sure the appropriate drivers are installed (Windows: Google USB Driver; macOS/Linux: no extra driver needed).
Now that ADB can talk to the device, you can tell Android that your chosen app should become the Device Owner. This is a single‑line command:
adb shell dpm set-device-owner com.example.kiosk/.DeviceAdminReceiver
Replace com.example.kiosk/.DeviceAdminReceiver with the full component name of the app’s DeviceAdminReceiver. Most apps expose it as .admin.DeviceAdminReceiver or similar. If you are unsure, you can list the receivers with:
adb shell dumpsys package com.example.kiosk | grep DeviceAdminReceiver
When the command succeeds, you will see a message like “Success: Device owner set”. The device will automatically restart and finish the setup wizard, but most UI elements will be hidden.
Device Owner gives you programmatic control over many policies, but you can also apply a few common restrictions without writing code, using ADB’s dpm set‑user‑restriction command.
adb shell dpm set-status-bar-disabled trueadb shell dpm set-usb-data‑signaling disabled (available on Android 9+).adb shell dpm set-safe‑mode‑disabled trueadb shell settings put global policy_control immersive.full=*These commands are optional; the core kiosk experience already blocks most exit routes. Test each restriction on your device to ensure it behaves as expected.
After the reboot, the device should launch the kiosk app automatically. Try the following checks:
If any of these actions still work, double‑check the dpm commands you ran and verify that the app’s DeviceAdminReceiver is correctly registered.
Because the device is now owned, you cannot simply uninstall the app or clear its data. To return the device to normal consumer mode you have two safe paths:
adb shell dpm remove‑device‑owner
This command only works if the device is not locked by a policy that prevents ADB access. After removal, perform a normal reboot.
Remember that a factory reset will erase all user data, so back up anything you need before you start the kiosk deployment.
This means a previous owner is still present, usually after a failed reset. Perform a full factory reset from recovery (see Step 7) and start again.
The component name you supplied does not exist. Verify the package name and the exact class name of the DeviceAdminReceiver. Use the adb shell dumpsys package command shown earlier to locate it.
Some OEM skins (e.g., Samsung One UI) ignore the generic dpm set-status-bar-disabled command. In those cases you may need to use a third‑party kiosk app that implements OEM‑specific APIs, or resort to a custom ROM for full control.
On some devices USB debugging is automatically disabled after a Device Owner is set. To re‑enable it you must connect the device in “fastboot” mode and flash a temporary recovery that enables debugging, or perform another factory reset and set the owner again with debugging enabled before the first boot.
adb shell reboot via a scheduled task on a remote server, or configure the app’s own auto‑restart feature.adb logcat over Wi‑Fi (if allowed) or use a lightweight log‑forwarder built into the kiosk app to catch crashes before they affect users.By following the steps above you can turn any Android phone or tablet into a hardened kiosk without rooting or installing a custom ROM. The process hinges on a clean factory reset, enabling USB debugging early, and using ADB’s dpm commands to claim Device Owner and apply sensible restrictions. While the method works on most stock Android builds, OEM‑specific skins may require additional tweaks. Always keep a backup plan – a factory reset – handy in case the device needs to be repurposed later.









