我希望在屏幕锁定时显示一个活动。我正在后台运行一个服务,当事件发生时,即使应用程序已锁定(类似于闹钟应用程序唤醒屏幕并显示其活动),我也想打开一个活动。 我遵循以下步骤,当OnReceive()被调用时,我希望在锁屏界面上打开活动。
在活动的onCreate方法中添加以下代码,我想要展示:
public void OnReceive() {
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "myalarmapp:alarm.");
wl.acquire(5000);
Intent startAlarmActivity = new Intent(MainScreen.this, AcceptScreen.class);
startActivity(startAlarmActivity);
wl.release();
}
在活动的onCreate方法中添加以下代码,我想要展示:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
setShowWhenLocked(true);
setTurnScreenOn(true);
KeyguardManager keyguardManager = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
keyguardManager.requestDismissKeyguard(this, null);
}
else {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON |
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
我需要在要显示的活动清单中添加此内容:
<activity
android:name=".v2.ui.orderaccept.AcceptScreen"
android:exported="true"
android:label="@string/title_activity_accept_screen"
android:theme="@style/AppTheme.NoActionBar"
android:showOnLockScreen="true"
android:screenOrientation="sensorPortrait"/>
当手机没有锁屏密码时,它按预期工作。但是当锁屏有密码时,它就不能正常工作。