项目用到了,记录下,返回键什么的物理按键使用onKeyDown监听就可以了,但是锁屏键、Home键不可以,这里使用广播监听两者状态变化
IntentFilter片段:
mFilter.addAction(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);//home键 mFilter.addAction(Intent.ACTION_SCREEN_ON); //开屏 mFilter.addAction(Intent.ACTION_SCREEN_OFF);//锁屏 mFilter.addAction(Intent.ACTION_USER_PRESENT);//解锁
onRecevier片段:
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) { if (mListener != null) { if (reason.equals(SYSTEM_DIALOG_REASON_HOME_KEY)) { // 短按home键 mListener.onHomePressed(); } else if (reason .equals(SYSTEM_DIALOG_REASON_RECENT_APPS)) { // 长按home键 mListener.onHomeLongPressed(); } } } } if(action.equals(Intent.ACTION_SCREEN_ON)){ mListener.onScreenOn(); }else if(action.equals(Intent.ACTION_SCREEN_OFF)){ mListener.onScreenOff(); } else{// 解锁 //TODO }
最后提醒下,对于锁屏操作,由于先走的activity的onPause,onStop,所以不可以像以往反注册广播样在onPause里进行反注册,否则的话会接收不到锁屏操作
时间: 2024-11-09 01:42:02