android亮屏、暗屏、解鎖、關閉系統對話的監聽事件
阿新 • • 發佈:2019-01-22
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.button_layuout); final IntentFilter filter = new IntentFilter(); // 螢幕滅屏廣播 filter.addAction(Intent.ACTION_SCREEN_OFF); // 螢幕亮屏廣播 filter.addAction(Intent.ACTION_SCREEN_ON); // 螢幕解鎖廣播 filter.addAction(Intent.ACTION_USER_PRESENT); // 當長按電源鍵彈出“關機”對話或者鎖屏時系統會發出這個廣播 // example:有時候會用到系統對話方塊,許可權可能很高,會覆蓋在鎖屏介面或者“關機”對話方塊之上, // 所以監聽這個廣播,當收到時就隱藏自己的對話,如點選pad右下角部分彈出的對話方塊 filter.addAction(Intent.ACTION_CLOSE_SYSTEM_DIALOGS); BroadcastReceiver mBatInfoReceiver = new BroadcastReceiver() { @Override public void onReceive(final Context context, final Intent intent) { Log.d(TAG, "onReceive"); String action = intent.getAction(); if (Intent.ACTION_SCREEN_ON.equals(action)) { Log.d(TAG, "screen on"); } else if (Intent.ACTION_SCREEN_OFF.equals(action)) { Log.d(TAG, "screen off"); } else if (Intent.ACTION_USER_PRESENT.equals(action)) { Log.d(TAG, "screen unlock"); } else if (Intent.ACTION_CLOSE_SYSTEM_DIALOGS.equals(intent.getAction())) { Log.i(TAG, " receive Intent.ACTION_CLOSE_SYSTEM_DIALOGS"); } } }; Log.d(TAG, "registerReceiver"); registerReceiver(mBatInfoReceiver, filter); }