для Android версии 4 (API 14 и выше), возможно, будет возможно использовать:
. GetWindow () SetType (WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
однако, на эмуляторе, он не блокирует кнопку home, так что это бесполезно.
я до сих пор не знаю, работает ли он на реальных устройствах.
возможно, можно использовать следующий обходной путь:
установить приложение в качестве приложения на главном экране по умолчанию.
Если кнопка «Домой» была нажата, когда приложение было активно, перехватите его и ничего не делайте.
Если кнопка «Домой» была нажата, когда приложение находилось в фоновом режиме (или было закрыто), откройте ранее выбранное домашнее приложение по умолчанию.
в качестве альтернативы, я мог бы попросить пользователя установить приложение домашней пусковой установки по умолчанию как мое для каждого запуска, и сбросить его снова (либо к предыдущему, либо к общему сбросу) после его закрытия.
это возможно?
если да, то как?
Начиная с Android Lollipop (версия 5.0, которая является API 21), существует способ закрепления экрана, который может быть включен пользователем или приложением (ссылка здесь ):
Существует два способа активировать закрепление экрана:
Вручную: пользователи могут включить закрепление экрана в Настройки> Безопасность>
Экран закрепления и выберите задачи, которые нужно закрепить, коснувшись
зеленый значок булавки на экране последние. Программно: активировать
программно закрепите экран, вызовите startLockTask () из вашего приложения.
Если запрашивающее приложение не является владельцем устройства, пользователю предлагается
подтверждение. Приложение владельца устройства может вызывать setLockTaskPackages ()
метод, позволяющий закреплять приложения без подтверждения пользователя
шаг. * +1021 *
Что это делает? читайте дальше и смотрите:
Когда активна блокировка задачи, происходит следующее:
Строка состояния пуста, а пользовательские уведомления и информация о состоянии
скрыты Кнопки «Домой» и «Последние приложения» скрыты. Другие приложения
не может начать новые действия. Текущее приложение может начать новое
деятельность, пока это не создает новые задачи. Когда экран
Пиннинг вызывается владельцем устройства, пользователь остается заблокированным для вашего
приложение, пока приложение не вызовет stopLockTask (). Если закрепление экрана - это активность
другим приложением, которое не является владельцем устройства или пользователем напрямую,
пользователь может выйти, удерживая кнопки Назад и Недавние.
Не только это, но согласно этой записи , вы также можете переключать это без подтверждения пользователя, и выход из этого специального состояния будет зависеть от логики вашего приложения.
Похоже, идеально подходит для безопасного приложения для малышей.