萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> 安卓開發 >> android屏幕加解鎖事件廣播的監聽

android屏幕加解鎖事件廣播的監聽

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

}
copyright © 萬盛學電腦網 all rights reserved