禁用键盘锁可锁定纵向屏幕方向

时间:2019-02-15 13:22:53

标签: android orientation lockscreen keyguard

我有一个警报应用程序,我从警报管理器触发的广播接收器中触发活动警报活动。

因此,为了唤醒设备并解锁屏幕,我在触发活动之前使用了广播接收器中的以下代码:

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,这是否应该完成显示我的活动的工作?

0 个答案:

没有答案