включить экран без разблокировки экрана блокировки - PullRequest
0 голосов
/ 07 января 2019

Я отжимаю телефонное приложение по умолчанию, и мне нужно разблокировать устройство при поступлении нового вызова. Я пытался сделать это так:

    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? Моя цель - разбудить устройство и показать свою активность, но не разблокировать экран блокировки.

1 Ответ

0 голосов
/ 08 января 2019

Попробуйте добавить android:showOnLockScreen="true" в AndroidManifest.xml для вашей активности:

<activity
    android:name=".call.CallActivity"
    android:launchMode="singleTop"
    android:noHistory="true"
    android:showOnLockScreen="true"
    android:showForAllUsers="true" />
...