Не удается получить приложение для программной разблокировки клавиатуры [Ни одно из существующих решений не работает!]
Я прочитал около 10-15 сообщений на Stackru, и все они, кажется, имеют ответы, которые решали проблемы спрашивающего, но я не могу заставить эти решения работать в моем случае. У меня есть приложение, которое позволяет установить будильник, и приложение должно разбудить телефон (что он делает) -> разблокировать устройство (что он не делает) -> показать диалоговое окно (что он делает один раз, разблокированный вручную)
У меня есть следующий код в OnCreate() деятельности, которая запускается AlarmReceiver
KeyguardManager keyguardManager = (KeyguardManager) getApplicationContext().getSystemService(Context.KEYGUARD_SERVICE);
KeyguardManager.KeyguardLock keyguardLock = keyguardManager.newKeyguardLock("TAG");
keyguardLock.disableKeyguard();
final Window win = getWindow();
win.addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
win.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
А в OnReceive класса AlarmReceiver я вызываю метод WakeLocker.acquire(), который является статическим методом со следующим кодом:
public static void acquire(final Context ctx) {
if (wakeLock != null) wakeLock.release();
final PowerManager pm = (PowerManager) ctx.getSystemService(Context.POWER_SERVICE);
wakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK |
PowerManager.ACQUIRE_CAUSES_WAKEUP |
PowerManager.ON_AFTER_RELEASE, "TAG");
wakeLock.acquire();
}
Мой AndroidManifest.xml содержит следующие разрешения
android.permission.WAKE_LOCK
android.permission.DISABLE_KEYGUARD
Я использую класс WakefulBroadcastReceiver для получения трансляции, и внутри onReceive я начинаю действие с диалогового окна. У меня samsung S3 с 4.4.4 андроидом. Я не уверен, что это проблема с API, но я просто не могу заставить эту штуку работать. Телефон загорается и показывает экран блокировки, но он ждет, чтобы я разблокировал его, прежде чем показывать мне диалоговое окно. Спасибо за любую помощь в этом отношении.
1 ответ
Я изменил тему моего приложения с Dialog.ALert на DeviceDefault.NoActionbar, и вдруг оно начало работать так, как я хотел. Я, вероятно, думаю, что показ диалоговых действий поверх клавиатуры не разрешен, и, следовательно, ошибка в моем случае.