как разблокировать экран при вызове BroadcastReceiver?
Как вы можете догадаться, я регистрирую сигнал тревоги AlarmManager. И BroadcastReceiver будет называться правильно. Но когда он позвонил, мой экран телефона все еще заблокирован. Я замечаю, что приложение AlarmClock по умолчанию не похоже на это. Поэтому мой вопрос в том, как разблокировать экран, когда вызывается BroadcastReceiver ? (Разблокировка экрана может заставить пользователя управлять моей деятельностью напрямую) Спасибо заранее.
2 ответов
исходный код будильника находится в исходном коде Android. AlarmClock ушел, но был заменен DeskClock. исходный код здесь. Я быстро просмотрел код, и их приемник, похоже, использует KeyguardManager. Проверьте документы, кажется, это то, что вы хотите.
EDIT: я добавлю ваши выводы здесь. Этот код должен делать:
final Window win = getWindow();
win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
| WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
откройте действие A, которое вы хотите начать с onReceive(....). Вставьте это в onCreate () этого действия a
final Window win= getWindow();
win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON |
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
убедитесь, что вы не вставляете его перед setContentView(....):)