在这里我们可以使用广播来监听
1、先创建一个广播
private static finalStringSYSTEM_DIALOG_REASON_KEY="reason";
private static finalStringSYSTEM_DIALOG_REASON_RECENT_APPS="recentapps";
private static finalStringSYSTEM_DIALOG_REASON_HOME_KEY="homekey";
private static finalStringSYSTEM_DIALOG_REASON_LOCK="lock";
private static finalStringSYSTEM_DIALOG_REASON_ASSIST="assist";
@Override
public voidonReceive(finalContext context, Intent intent) {
String action = intent.getAction();
Log.i(LOG_TAG,"onReceive: action: "+ action);
if(action.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)) {
String reason = intent.getStringExtra(SYSTEM_DIALOG_REASON_KEY);
Log.d(LOG_TAG,"reason="+ reason);
if(SYSTEM_DIALOG_REASON_HOME_KEY.equals(reason)) {
//短按Home键
Log.d(TAG,"短按Home键");
}else if(SYSTEM_DIALOG_REASON_RECENT_APPS.equals(reason)) {
//长按Home键 或者activity切换键
Log.d(TAG,"长按Home键 或者activity切换键");
}else if(SYSTEM_DIALOG_REASON_LOCK.equals(reason)) {
//锁屏
Log.d(TAG,"锁屏");
}else if(SYSTEM_DIALOG_REASON_ASSIST.equals(reason)) {
//长按Home键
Log.d(TAG,"长按Home键");
}
}
}
2、然后写一个通用的Activity,让应用中的所有Activity都继承该Activity,并在该Activity中的onResume中注册广播,在onPause中注销广播
//注册广播
private static voidregisterHomeKeyReceiver(Context context) {
mHomeKeyReceiver=newHomeWatcherReceiver();
finalIntentFilter homeFilter =newIntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
context.registerReceiver(mHomeKeyReceiver, homeFilter);
}
//注销广播
private static voidunregisterHomeKeyReceiver(Context context) {
if(null!=mHomeKeyReceiver) {
context.unregisterReceiver(mHomeKeyReceiver);
}
}
公众号:Android技术经验分享
网友评论