01 |
private final BroadcastReceiver homePressReceiver = new BroadcastReceiver() { |
02 |
final String SYSTEM_DIALOG_REASON_KEY = "reason" ; |
03 |
final String SYSTEM_DIALOG_REASON_HOME_KEY = "homekey" ; |
05 |
public void onReceive(Context context, Intent intent) { |
06 |
String action = intent.getAction(); |
07 |
if (action.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)) { |
08 |
String reason = intent.getStringExtra(SYSTEM_DIALOG_REASON_KEY); |
09 |
if (reason != null && reason.equals(SYSTEM_DIALOG_REASON_HOME_KEY)) { |
然后在onreate()方法中,注冊
1 |
final IntentFilter homeFilter = new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS); |
2 |
registerReceiver(homePressReceiver, homeFilter); |
當(dāng)然最后為了程序的嚴(yán)謹(jǐn)性也是為了防止出錯,我們在onDestory()方法中,也要解除注冊
1 |
if (homePressReceiver != null ){ |
3 |
unregisterReceiver(homePressReceiver); |
4 |
} catch (Exception e) { |
5 |
Log.e(TAG, "unregisterReceiver homePressReceiver failure :" +e.getCause()); |
2,電源監(jiān)聽,先要有權(quán)限
1 |
< uses-permission android:name = "android.permission.WAKE_LOCK" /> |
然后監(jiān)聽兩個action
01 |
Intent.ACTION_SCREEN_OFF |
02 |
Intent.ACTION_SCREEN_ON |
03 |
private final BroadcastReceiver mBatInfoReceiver = new BroadcastReceiver() { |
05 |
public void onReceive( final Context context, final Intent intent) { |
06 |
final String action = intent.getAction(); |
07 |
if (Intent.ACTION_SCREEN_OFF.equals(action)) { |
13 |
IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_OFF); |
14 |
registerReceiver(mBatInfoReceiver, filter); |
16 |
if (mBatInfoReceiver != null ){ |
18 |
unregisterReceiver(mBatInfoReceiver); |
19 |
} catch (Exception e) { |
20 |
Log.e(TAG, "unregisterReceiver mBatInfoReceiver failure :" +e.getCause()); |