android程序監聽home鍵與電源鍵

jopen 11年前發布 | 16K 次閱讀 Android開發 移動開發 Android

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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!