唤醒屏幕而不解锁屏幕

时间:2019-01-07 16:48:40

标签: android android-wake-lock

我正在使用默认的电话应用程序,一旦有新电话打入,我就需要解锁设备。我一直在尝试这样做:

    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" />

请注意,在API 17中不推荐使用PowerManager.FULL_WAKE_LOCK,建议使用FLAG_KEEP_SCREEN_ON,但是在此设置下,我的屏幕没有被唤醒,当我手动打开它时,我的活动是清单中的标记未显示在锁定屏幕顶部。

showForAllUsers文档中:

  

指定即使显示“活动”也应显示   当前/前景用户与活动用户不同。   这也将迫使   android.view.LayoutParams.FLAG_SHOW_WHEN_LOCKED标志要全部设置   此活动的窗口

那么在API 23中执行此操作的正确方法是什么?我的目标是唤醒设备并显示我的活动,但不要解锁锁定屏幕。

1 个答案:

答案 0 :(得分:0)

尝试为您的活动在android:showOnLockScreen="true"中添加AndroidManifest.xml

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