![](https://webcf.waybackmachine.org/web/20230314223547im_/https://habrastorage.org/getpro/habr/upload_files/5e7/5ee/9d2/5e75ee9d2b8b9386fd71c1f7691a1698.jpeg)
Максим Денисов, разработчик в Лиге Цифровой Экономики, поделился опытом создания системы управления доступом на Android и рассказал, как менялся подход к контролю доступа.
В этой статье расскажу, как изменился подход к контролю доступа к корпоративному устройству внутри одной компании.
Нашей задачей была разработка приложения, которое заблокирует доступ к потерянному устройству на Android, будет отправлять действия пользователя на сервер и обновляться также с сервера.
Такой опыт, на мой взгляд, будет интересен для тех, кто работает над подобными задачами, например системами управления корпоративной техникой или родительского контроля.
Разработка началась в 2015 году, когда 5-я версия Android была последней.
1. Подход на основе блокирующей view
1.1. Блокировка
Суть подхода — работа блокирующего окна, которое отображается поверх всех остальных. После авторизации оно закрывается.
В манифесте приложения нужно добавить следующее разрешение:
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
С API 23 необходимо явно его указывать. Поэтому при настройке приложения администратор должен выбрать «Разрешать всегда».
У блокирующего экрана добавить свойства:
WindowManager.LayoutParams.TYPE_SYSTEM_ALERT
WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN
Кроме того, следует создать сервис, в котором ресивер отлавливает выключение экрана и вызывает блокирующую view.