我有一个警报应用程序,我从警报管理器触发的广播接收器中触发活动警报活动。
因此,为了唤醒设备并解锁屏幕,我在触发活动之前使用了广播接收器中的以下代码:
KeyguardManager.KeyguardLock lock = ((KeyguardManager) context.getSystemService(KEYGUARD_SERVICE)).newKeyguardLock(KEYGUARD_SERVICE);
PowerManager powerManager = ((PowerManager) context.getSystemService(POWER_SERVICE));
PowerManager.WakeLock wake = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, FULL_WAKE_UP);
lock.disableKeyguard();
wake.acquire();
这是清单中的我的活动声明:
<activity
android:name=".activities.ActiveAlarmActivity"
android:launchMode= "singleTask"
android:configChanges="keyboardHidden|orientation|screenSize"
android:theme="@style/Theme.AppCompat.Light.NoActionBar.FullScreen"
android:windowSoftInputMode="stateHidden|adjustResize"></activity>
在我的活动中,我使用以下代码:
baseAppCompatActivity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
| WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
| WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON
);
因此您可以看到我的活动支持所有方向,但是当我专门使用此行时:
lock.disableKeyguard();
我的活动仅被锁定为纵向模式,并且当我物理改变方向时方向不会改变。
我是否仍需要禁用键盘锁?
只要我仅使用电源管理器唤醒设备,然后在我的活动中使用WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD,这是否应该完成显示我的活动的工作?