设备收到通知时如何打开屏幕

问题描述 投票:0回答:1

在我们的应用程序中,我们希望在通知到达时唤醒屏幕。此通知逻辑将投入使用。我们尝试使用“PARTIAL_WAKE_LOCK”,但这不起作用。 我们还尝试了“FULL_WAKE_LOCK”,它可以工作,但由于它已被弃用,我们无法在产品应用程序中使用它。 我们已经看到了“PARTIAL_WAKE_LOCK”的替代方案,例如“turnScreenOn”,但这不能从服务中使用。

我的问题是,当设备收到通知时,我们是否有其他替代方法可以通过消息传递服务打开屏幕?

或者, 我们在设备上设置了手动启用唤醒锁,对吧? (设置->显示->锁定屏幕->通知唤醒屏幕。) 我们可以通过某种编程方式直接从应用程序打开此设置页面吗?

请做需要的事情。

android push-notification android-wake-lock
1个回答
0
投票

我最近在我的项目中已经解决了类似的问题。

首先确保您已在清单中添加此权限。

<uses-permission android:name="android.permission.WAKE_LOCK" />

完成后,现在只需在 FCM 服务类 onMessageReceived 方法中调用此代码即可。

private fun wakeApp() {
    val pm = applicationContext.getSystemService(POWER_SERVICE) as PowerManager
    val screenIsOn = pm.isInteractive // check if screen is on
    if (!screenIsOn) {
        val wakeLockTag = packageName + "WAKELOCK"
        val wakeLock = pm.newWakeLock(
            PowerManager.FULL_WAKE_LOCK or
                    PowerManager.ACQUIRE_CAUSES_WAKEUP or
                    PowerManager.ON_AFTER_RELEASE, wakeLockTag
        )
        //acquire will turn on the display
        wakeLock.acquire()
        //release will release the lock from CPU, in case of that, screen will go back to sleep mode in defined time bt device settings
        wakeLock.release()
    }
}

您可以在 onPauseonResume 中使用 aquirerelease 使其正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.