如何找到屏幕被锁定在android中

Pra*_*sad 13 android

对于我的应用程序,我需要知道屏幕已被锁定.如何检查这是有问题的.我使用了以下标志:

if(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON != 0){
    // some code
}else if((WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED)!= 0){
   // some code
}
Run Code Online (Sandbox Code Playgroud)

但这总是执行if和else部分...我必须使用哪个标志来检查屏幕是否被锁定?

Mac*_*ato 22

我会尝试回答这个问题,虽然这个问题已经很久了,因为它尚未解决,可以帮助其他googlers.;)

首先,您必须为Intent.ACTION_SCREEN_OFF和Intent.ACTION_SCREEN_ON注册BroadcastReceiver.请注意,此接收器必须在代码中注册,并且在清单中声明时不起作用.

在您的广播接收器中,当您收到Intent.ACTION_SCREEN_ON时,您可以使用以下代码检查屏幕是否被锁定:

KeyguardManager km = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
boolean locked = km.inKeyguardRestrictedInputMode();
Run Code Online (Sandbox Code Playgroud)


Yug*_*abu 1

使用操作注册广播接收器android.intent.action.ACTION_SCREEN_OFF并在接收器的 onReceive() 方法中编写代码。

如果您正在使用 Activity,则屏幕锁定时将调用 onPause(),屏幕解锁时将调用 onResume()。

在您的代码中,您正在检查一些标志,我不知道您将在哪里进行检查?是持续验证吗?如果您在应用程序中使用 Activity,则会发生上述过程,只需在 Android 开发者网站中查看即可。