我正在使用默认的电话应用程序,一旦有新电话打入,我就需要解锁设备。我一直在尝试这样做:
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中执行此操作的正确方法是什么?我的目标是唤醒设备并显示我的活动,但不要解锁锁定屏幕。
答案 0 :(得分:0)
尝试为您的活动在android:showOnLockScreen="true"
中添加AndroidManifest.xml
:
<activity
android:name=".call.CallActivity"
android:launchMode="singleTop"
android:noHistory="true"
android:showOnLockScreen="true"
android:showForAllUsers="true" />