想在程序中監聽屏幕SCREEN_ON和SCREEN_OFF這兩個action,實現屏幕鎖定狀態的監聽,從而實現自己的相應功能。比較奇怪的是這兩個action只能通過代碼的形式注冊才能被監聽到,在AndroidManifest.xml中注冊根本監聽不到。去網上查了一下,原來是PowerManager那邊在發這個廣播的時候做了限制,限制只有register到代碼中的receiver才能接收。特此記錄!
public class ScreenActionReceiver extends BroadcastReceiver {
private String TAG = "ScreenActionReceiver";
private boolean isRegisterReceiver = false;
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(Intent.ACTION_SCREEN_ON)) {
Logcat.d(TAG, "屏幕解鎖廣播...");
} else if (action.equals(Intent.ACTION_SCREEN_OFF)) {
Logcat.d(TAG, "屏幕加鎖廣播...");
}
}
public void registerScreenActionReceiver(Context mContext) {
if (!isRegisterReceiver) {
isRegisterReceiver = true;
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_SCREEN_OFF);
filter.addAction(Intent.ACTION_SCREEN_ON);
Logcat.d(TAG, "注冊屏幕解鎖、加鎖廣播接收者...");
mContext.registerReceiver(ScreenActionReceiver.this, filter);
}
}
public void unRegisterScreenActionReceiver(Context mContext) {
if (isRegisterReceiver) {
isRegisterReceiver = false;
Logcat.d(TAG, "注銷屏幕解鎖、加鎖廣播接收者...");
mContext.unregisterReceiver(ScreenActionReceiver.this);
}
}
}