Android技术知识程序员

android监听应用按下home键

2016-10-13  本文已影响459人  24K纯帅豆

在这里我们可以使用广播来监听


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技术经验分享
上一篇下一篇

猜你喜欢

热点阅读