Не удается получить приложение для программной разблокировки клавиатуры [Ни одно из существующих решений не работает!]

Я прочитал около 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, и вдруг оно начало работать так, как я хотел. Я, вероятно, думаю, что показ диалоговых действий поверх клавиатуры не разрешен, и, следовательно, ошибка в моем случае.

Другие вопросы по тегам