Я отжимаю телефонное приложение по умолчанию, и мне нужно разблокировать устройство при поступлении нового вызова. Я пытался сделать это так:
PowerManager powerManager = (PowerManager) getApplicationContext()
.getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wakeLock = powerManager.newWakeLock(
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON |
PowerManager.ACQUIRE_CAUSES_WAKEUP, getPackageName() + ":Call");
wakeLock.acquire();
И это определение, которое я использовал в Манифесте. Мой минимальный API 23
<activity
android:name=".call.CallActivity"
android:launchMode="singleTop"
android:noHistory="true"
android:showForAllUsers="true" />
Обратите внимание, что PowerManager.FULL_WAKE_LOCK
устарело в API 17, и вместо него предлагается использовать FLAG_KEEP_SCREEN_ON
, однако при этой настройке мой экран не просыпается, и когда я включаю его вручную, моя активность не отображается сверху экрана блокировки, как подсказывает флаг в манифесте.
Из showForAllUsers документы:
Укажите, что действие должно отображаться, даже если
текущий / основной пользователь отличается от пользователя действия.
Это также заставит
android.view.LayoutParams.FLAG_SHOW_WHEN_LOCKED флаг, который будет установлен для всех
окна этой деятельности
Так, как правильно сделать это в API 23? Моя цель - разбудить устройство и показать свою активность, но не разблокировать экран блокировки.