想在程式中監聽螢幕SCREEN_ON和SCREEN_OFF這兩個action,實現螢幕鎖定狀態的監聽,從而實現自己的相應功能。比較奇怪的是這兩個action只能通過代碼的形式註冊才能被監聽到,在AndroidManifest.xml中註冊根本監聽不到。去網上查了一下,原來是PowerManager那邊在發這個廣播的時候做了限制,限制只有register到代碼中的receiver才能接收。特此記錄!
public class ScreenActionReceiver extends BroadcastReceiver {private String TAG = "ScreenActionReceiver";private boolean isRegisterReceiver = false;@Overridepublic 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);}}}