在锁屏上方打开活动

时间:2019-04-30 03:14:55

标签: android

我尝试在bool getPaid() const; std::string getName() const; 的锁定屏幕上打开Activity,但不能。 我在Android清单以及我搜索的适当活动和权限上添加了Android PieshowWhenLocked,但是无法在手机的默认锁定屏幕上打开该活动。有帮助吗?

MainActivity

turnScreenOn

Android清单

  

android:showWhenLocked =“ true”
              android:turnScreenOn =“ true”
              android:showOnLockScreen =“ true”
              android:excludeFromRecents =“ true”

2 个答案:

答案 0 :(得分:1)

只需在要在锁定屏幕上打开的活动中覆盖以下方法即可。

@Override
public void onAttachedToWindow() {
    super.onAttachedToWindow();
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON |
            WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
            WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
            WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
}

并将以下标记添加到清单中的活动中。

android:excludeFromRecents="true"

答案 1 :(得分:0)

这是我的工作方法,在活动的setContentView()之前从onCreate()调用它

还为您在AndroidManifest文件中的活动设置了以下标志。

android:showOnLockScreen="true"

/ **  *允许呼叫屏幕显示在锁定屏幕上  * /

private fun allowOnLockScreen() {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
        setShowWhenLocked(true)
        setTurnScreenOn(true)
        val keyguardManager = getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager
        keyguardManager.requestDismissKeyguard(this, null)
    } else {
        this.window.addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD or
                WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED or
                WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON)
    }
}