<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/medium-p1heqkal2" -->

---
title: Medium | daily.dev
description: A practical walkthrough of implementing Android Kiosk Mode for a commercial POS device. Covers the full setup: creating a DeviceAdminReceiver, registering it...
canonical: https://daily.dev/posts/medium-p1heqkal2
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Medium | daily.dev
og:description: A practical walkthrough of implementing Android Kiosk Mode for a commercial POS device. Covers the full setup: creating a DeviceAdminReceiver, registering it...
og:url: https://daily.dev/posts/medium-p1heqkal2
og:image: https://api.daily.dev/og/posts/P1HEqkaL2.png
og:image:alt: Medium
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Medium

**[Medium](https://daily.dev/sources/medium_js)** · 5 min read · 0 upvotes · 0 comments

## Summary

A practical walkthrough of implementing Android Kiosk Mode for a commercial POS device. Covers the full setup: creating a DeviceAdminReceiver, registering it in the manifest, provisioning Device Owner via ADB, whitelisting the app for Lock Task Mode, and calling startLockTask(). Explains why simply calling startLockTask() is insufficient without Device Owner privileges, and clarifies that Device Owner provisioning requires a factory-reset, unprovisioned device.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://medium.com/@harshhotwani367/how-i-built-android-kiosk-mode-for-a-commercial-device-a-complete-guide-to-device-owner-lock-aa836165e2da>

## Similar posts on daily.dev

- [Beyond Doze: Building Reliable Background Execution on Modern Android \(Including OEM Realities\)](https://daily.dev/posts/beyond-doze-building-reliable-background-execution-on-modern-android-including-oem-realities--b4bmxjjrv) · ProAndroidDev · 1 upvotes · 0 comments
- [Trade-in mode on Android 16\+](https://daily.dev/posts/trade-in-mode-on-android-16--h5qzmnc3w) · Android Developers Blog · 2 upvotes · 0 comments
- [Android May Soon Restrict On-Device ADB, Affecting Shizuku, libadb and Developers](https://daily.dev/posts/android-may-soon-restrict-on-device-adb-affecting-shizuku-libadb-and-developers-c2ytcrxx7) · Hacker News · 2 upvotes · 0 comments
- [The first 5 things I do to every Android phone before I even sign in](https://daily.dev/posts/the-first-5-things-i-do-to-every-android-phone-before-i-even-sign-in-fc7x314l2) · XDA Developers · 1 upvotes · 0 comments

---

Tags: [#android](https://daily.dev/tags/android), [#kotlin](https://daily.dev/tags/kotlin)

[View this post on daily.dev](https://daily.dev/posts/medium-p1heqkal2)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Medium","url":"https://daily.dev/posts/medium-p1heqkal2","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/medium-p1heqkal2"},"datePublished":"2026-07-22T19:57:22.522Z","dateModified":"2026-07-22T19:59:20.571Z","description":"A practical walkthrough of implementing Android Kiosk Mode for a commercial POS device. Covers the full setup: creating a DeviceAdminReceiver, registering it...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/c1650bfd5a6f6294f8da8aeec00a3575?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/c1650bfd5a6f6294f8da8aeec00a3575?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Medium","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Medium","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/medium","url":"https://daily.dev/sources/medium_js"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/medium-p1heqkal2","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"android,kotlin","timeRequired":"PT5M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Medium","item":"https://daily.dev/sources/medium_js"},{"@type":"ListItem","position":3,"name":"Medium"}]}
```

