長按Home鍵喚起Google Search

長按Home鍵喚起Google Search

android默認處理長按Home鍵會喚起最近使用應用列表,而部分廠商在安裝了GMS後,Google會要求
修改長按Home鍵喚起Google Search

一,具有實體按鍵的廠商可以更改配置文件

Frameworks/base/core/res/res/values/Config.xml

<integer name="config_longPressOnHomeBehavior">2</integer>

改爲0即可,這裏的值可以設置三個,1代表喚起recent app界面;2代表喚起搜索界面(Google Search);0代表Nothing;

具體實現是在PhoneWindowManager中handleLongPressOnHome處理Home鍵長按事件

    private void handleLongPressOnHome(int deviceId) {
    if (mLongPressOnHomeBehavior == LONG_PRESS_HOME_NOTHING) {
        return;
    }
    mHomeConsumed = true;
    performHapticFeedbackLw(null, HapticFeedbackConstants.LONG_PRESS, false);
    switch (mLongPressOnHomeBehavior) {
        case LONG_PRESS_HOME_ALL_APPS:
            launchAllAppsAction();
            break;
        case LONG_PRESS_HOME_ASSIST:
            launchAssistAction(null, deviceId);
            break;
        default:
            Log.w(TAG, "Undefined home long press behavior: " + mLongPressOnHomeBehavior);
            break;
    }
}

二,虛擬按鍵的廠商需要修改SystemUi的導航欄設置

/SystemUI/ src/com/android/systemui/statusbar/phone/NavigationBarFragment.java

在此類中分別對home鍵的短按和長按都做了監聽

    ButtonDispatcher homeButton = mNavigationBarView.getHomeButton();
    homeButton.setOnTouchListener(this::onHomeTouch);
    homeButton.setOnLongClickListener(this::onHomeLongClick);

我們只需要對onHomeLongClick做適當處理即可,比方說,切換到兒童模式長按home不會跳出google search

@VisibleForTesting
boolean onHomeLongClick(View v) {
    Log.i(TAG, "onHomeLongClick");
    if (!mNavigationBarView.isRecentsButtonVisible()
            && ActivityManagerWrapper.getInstance().isScreenPinningActive()) {
        return onLongPressBackHome(v);
    }
    if (shouldDisableNavbarGestures()) {
        return false;
    }
    mNavigationBarView.onNavigationButtonLongPress(v);
    mMetricsLogger.action(MetricsEvent.ACTION_ASSIST_LONG_PRESS);
    //add  start
    if(!isKidMode(getContext())){
        mAssistManager.startAssist(new Bundle() /* args */);
        //此處爲喚醒google search的地方
    }
    //add  end
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章