Intereting Posts
Отключить повторную ошибку класса для классов в тестовой папке – Android Studio / IntelliJ Должен ли координаторLayout быть помещен в Activity или Fragment при работе как с прокруткой, так и с прокруткой? Как поставить список в намерении Как отредактировать код библиотеки, импортированной с помощью Gradle в Android Studio? Не используйте емкостные кнопки при касании экрана Проблема с Android, выясняя, как последнее последнее исправление GPS Android Room: как моделировать отношения? Android – получить историю поиска Google? Замените стандартный парсер Android JSON для лучшей производительности? Как играть в анимированный GIF в TextView? Android: как сохранить данные в моем файле arrayadapter / listview при изменении ориентации? Использование Glide для загрузки растрового изображения в ImageView Apache httppost, как установить контент: у которых есть пара значений имени, указывающая на другой набор пары значений имени Каков наилучший способ получить отличные контакты в Android? Как объявить несколько стилируемых атрибутов с тем же именем для разных тегов?

Блокировка клавиатуры Android

Я работаю над приложением, которое заменит экран блокировки по умолчанию (проведите по разблокировке) для устройств Android. Я успешно сделал это, отключив менеджера клавиатуры и показывая свою активность с помощью широковещательного приемника для выключения экрана и включения экрана. Теперь проблема в том, что я снова установил блокировку экрана по умолчанию по какой-либо причине, тогда мое приложение не отключит блокировку клавиатуры, если я не закрою ее и не запустил.

km = (KeyguardManager) getApplicationContext().getSystemService(Context.KEYGUARD_SERVICE); if( km.inKeyguardRestrictedInputMode()) { //it is locked km = (KeyguardManager) getApplicationContext().getSystemService(KEYGUARD_SERVICE); kl=km.newKeyguardLock("com.example.helloworld.MainActivity"); kl.disableKeyguard(); } else { Intent i = getIntent(); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); getApplicationContext().startActivity(i); } 

Вы не можете заменить экран блокировки на пользовательское приложение. Все, что вы делаете, это взломать и может работать или не работать на каком-либо устройстве и, скорее всего, будет работать с новыми версиями. Вы можете создать что-то похожее на блокировку экрана, но он не будет работать как один. Кроме того, в последних версиях Android (после ICS) разблокировка экрана делает дополнительные вещи, такие как разблокирование хранилища учетных данных, которое ваше приложение не может сделать (поскольку у него нет системных разрешений).

Если вы действительно хотите заменить блокировку экрана, вам нужно создать собственный Android-ROM, изменив / заменив его.

Принятый ответ может быть устаревшим.

  • Теперь можно использовать Device Admin для создания и удаления паролей устройств.
  • Приложение можно разместить над текущим экраном блокировки, используя FLAG_SHOW_WHEN_LOCKED (полное объяснение в другом ответе )
  • Блокировка клавиатуры может быть отменена с помощью FLAG_DISMISS_KEYGUARD

В результате теоретически можно защитить фактический lockscreen с помощью пароля, созданного приложением (обеспечивающего реальную безопасность), поплавать пользовательский блокирующий экран над блокировкой Android и, когда предоставлен правильный пароль, – разблокировать и отменить реальную блокировку экран. Наконец, вы бы использовали приемник для восстановления или очистки пароля на соответствующих событиях, таких как SCREEN_OFF или SCREEN_ON – последний мог автоматически очистить пароль, если тайм-аут еще не был достигнут.

FWIW, я не рекомендую этот подход, так как сбой или удаление оставят пользователя с устройством, заблокированным паролем, который они не знают.