ОК, после нескольких поисков в Google и поиска проб и ошибок я наконец-то нашел ответ на эту проблему.Если вы пытаетесь создать приложение для Android, которое блокирует все кнопки, чтобы малыши не могли получить доступ к другим областям устройства, выполните следующие действия ...
В манифесте добавьте следующее в свое действие.Это приводит к тому, что ваша деятельность отображается в полноэкранном режиме:
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
Также в манифесте добавьте следующую строку.Это позволяет вашей активности контролировать, отображается ли экран блокировки при выключении и последующем включении экрана устройства:
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"></uses-permission>
В вашей активности импортируйте следующее.Это дает вам доступ к диспетчеру keygaurd, поэтому вы можете предотвратить появление экрана блокировки:
import android.app.KeyguardManager;
В определении класса вашей деятельности добавьте следующие две переменные.Это позволяет использовать менеджер keygaurd для событий onCreate(...)
, onPause(...)
и onResume(...)
(см. Ниже).
KeyguardManager keyguardManager;
KeyguardManager.KeyguardLock lock;
В событии onCreate(...)
вашей деятельности добавьте следующий код.Это назначило элементы управления блокировкой клавиш переменным класса, определенным выше, и предотвращает появление экрана блокировки, если экран выключен, а затем снова включен (кнопка питания нажата):
keyguardManager = (KeyguardManager) getSystemService(Activity.KEYGUARD_SERVICE);
lock = keyguardManager.newKeyguardLock(KEYGUARD_SERVICE);
lock.disableKeyguard();
В onPause(...)
вашей активностисобытие, добавьте следующий код.Это повторно включает блокировку клавиатуры, если ваша деятельность теряет фокус, например, когда пользователь вводит правильный код для выхода из заблокированного приложения (например, нажимая четыре угла по часовой стрелке).
lock.reenableKeyguard();
В вашемсобытие onResume(...)
, добавьте код фоллинга.Это отключает экран блокировки клавиш еще раз, когда ваше приложение возобновляет работу с выключенного экрана.
lock.disableKeyguard();
Это все, что нужно сделать.