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