android程序監聽home鍵與電源鍵
private final BroadcastReceiver homePressReceiver = new BroadcastReceiver() { final String SYSTEM_DIALOG_REASON_KEY = "reason"; final String SYSTEM_DIALOG_REASON_HOME_KEY = "homekey"; @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (action.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)) { String reason = intent.getStringExtra(SYSTEM_DIALOG_REASON_KEY); if (reason != null && reason.equals(SYSTEM_DIALOG_REASON_HOME_KEY)) { //自己隨意控制程序,關閉... } } } };
然后在onreate()方法中,注冊
final IntentFilter homeFilter = new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS); registerReceiver(homePressReceiver, homeFilter);
當然最后為了程序的嚴謹性也是為了防止出錯,我們在onDestory()方法中,也要解除注冊
if(homePressReceiver != null){ try { unregisterReceiver(homePressReceiver); } catch (Exception e) { Log.e(TAG, "unregisterReceiver homePressReceiver failure :"+e.getCause()); } }
2,電源監聽,先要有權限
<uses-permission android:name="android.permission.WAKE_LOCK" />
然后監聽兩個action
Intent.ACTION_SCREEN_OFF Intent.ACTION_SCREEN_ON private final BroadcastReceiver mBatInfoReceiver = new BroadcastReceiver() { @Override public void onReceive(final Context context, final Intent intent) { final String action = intent.getAction(); if (Intent.ACTION_SCREEN_OFF.equals(action)) { //退出程序... } } }; onCreate()方法中注冊 IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_OFF); registerReceiver(mBatInfoReceiver, filter); onDestory()方法中解除注冊 if(mBatInfoReceiver != null){ try { unregisterReceiver(mBatInfoReceiver); } catch (Exception e) { Log.e(TAG, "unregisterReceiver mBatInfoReceiver failure :"+e.getCause()); } }
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!