想在程序中監聽屏幕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);
- }
- }
- }