Для блокировки экрана Почему бы вам просто не использовать в своей основной деятельности следующее:
@Override
public void onAttachedToWindow() {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
}
Если у пользователя нет установленного безопасного экрана блокировки, приложение позволит пользователю опустить строку состояния и открыть действия, но это не имеет значения, поскольку пользователь, очевидно, не хочет защищенного экрана в любом случае.
Если у пользователя установлен безопасный локскрин, приложение покажет строку состояния, но не разрешит взаимодействие с ней. Это связано с тем, что телефон все еще заблокирован, и разрешено работать только вашей активности, пока пользователь не разблокирует телефон. Кроме того, закрытие вашего приложения в любом случае откроет стандартный безопасный экран блокировки. Все это очень желательно, потому что вам не нужно тратить все это время на кодирование безопасных функций, которые вы не можете гарантировать, будут такими же безопасными, как и стандартные.
Если вы действительно не хотите, чтобы пользователь мог взаимодействовать со строкой состояния, возможно, вы можете не указывать флаг FLAG_DISMISS_KEYGUARD
. Затем, перед тем, как вы собираетесь разблокировать телефон, установите флаг, как я показал в первом блоке. Я не знаю, работает ли эта последняя часть, но стоит попробовать.
Надеюсь, это поможет