Android 广播接收器在屏幕关闭时调用
我正在做一个应用程序,如果我们摇晃手机,它会锁定屏幕,我已经写下了屏幕关闭的代码,但现在的问题是我需要一个广播接收器来检查屏幕是关闭还是打开,我怎么做?希望如此 这有助于您更好地实现在Android关闭屏幕时调用广播接收器的方法 编辑: 您必须向清单中添加权限,如下所示:Android 广播接收器在屏幕关闭时调用,android,Android,我正在做一个应用程序,如果我们摇晃手机,它会锁定屏幕,我已经写下了屏幕关闭的代码,但现在的问题是我需要一个广播接收器来检查屏幕是关闭还是打开,我怎么做?希望如此 这有助于您更好地实现在Android关闭屏幕时调用广播接收器的方法 编辑: 您必须向清单中添加权限,如下所示: <receiver android:name=".MyBroadCastReciever"> <intent-filter> <action android:name="a
<receiver android:name=".MyBroadCastReciever">
<intent-filter>
<action android:name="android.intent.action.SCREEN_OFF"/>
<action android:name="android.intent.action.SCREEN_ON"/>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
如果您需要在特定时刻检查屏幕是关闭还是打开,这里是一个很好的方法,您无需注册接收器
PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
boolean isScreenOn = powerManager.isScreenOn();
if (!isScreenOn) {//lock screen
//do something
}
如果你想在屏幕关闭时收听,那么你需要注册一个接收器。对于Intent.ACTION\u SCREEN\u OFF和Intent.ACTION\u SCREEN\u ON,您不能在Android清单中声明它们,但它们必须在JAVA代码的IntentFilter中注册,并且不需要添加任何权限
public class ScreenReceiver extends BroadcastReceiver {
public static boolean wasScreenOn = true;
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
// do whatever you need to do here
wasScreenOn = false;
} else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
// and do whatever you need to do here
wasScreenOn = true;
}
}
}
然后在活动的onCreate中注册receiver
@Override
protected void onCreate() {
//your code
BroadcastReceiver mReceiver = new ScreenReceiver();
registerReceiver(mReceiver, filter);
}
@Override
protected void onDestroy() {
//your code
unregisterReceiver(mReceiver);
}
并在活动的onDestroy中注销
@Override
protected void onCreate() {
//your code
BroadcastReceiver mReceiver = new ScreenReceiver();
registerReceiver(mReceiver, filter);
}
@Override
protected void onDestroy() {
//your code
unregisterReceiver(mReceiver);
}
希望这对您有所帮助。我看到了这一点,如果我按照您的链接进行,清单中的任何修改(例如,如果我们正在编写接收器监控重新启动,则意味着我们必须添加BOOT\u完成任何类似的事情)