Merge "Call a search activity when using KEYCODE_SEARCH" am: 37d4e041bc
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/2455076 Change-Id: I57da974351afff1e09ba521dd7baced1dd154542 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -1118,14 +1118,25 @@
|
||||
<integer name="config_triplePressOnStemPrimaryBehavior">0</integer>
|
||||
|
||||
<!-- Control the behavior when the user short presses the stem primary button.
|
||||
Stem primary button is only used on watch form factor. If a device is not
|
||||
a watch, setting this config is no-op.
|
||||
0 - Nothing
|
||||
1 - Go to launch all apps
|
||||
Stem primary button is only used on watch form factor. If a device is not
|
||||
a watch, setting this config is no-op.
|
||||
0 - Nothing
|
||||
1 - Go to launch all apps
|
||||
-->
|
||||
<integer name="config_shortPressOnStemPrimaryBehavior">0</integer>
|
||||
|
||||
|
||||
<!-- Control the behavior of the search key.
|
||||
0 - Launch default search activity
|
||||
1 - Launch target activity defined by config_searchKeyTargetActivity
|
||||
-->
|
||||
<integer name="config_searchKeyBehavior">0</integer>
|
||||
|
||||
<!-- Component name for the default target activity to be launched when user
|
||||
presses the global search key. [DO NOT TRANSLATE]
|
||||
-->
|
||||
<string name="config_searchKeyTargetActivity" translatable="false"></string>
|
||||
|
||||
<!-- Time to wait while a button is pressed before triggering a very long press. -->
|
||||
<integer name="config_veryLongPressTimeout">3500</integer>
|
||||
|
||||
|
||||
@@ -451,6 +451,8 @@
|
||||
<java-symbol type="integer" name="config_doublePressOnStemPrimaryBehavior" />
|
||||
<java-symbol type="integer" name="config_triplePressOnStemPrimaryBehavior" />
|
||||
<java-symbol type="string" name="config_doublePressOnPowerTargetActivity" />
|
||||
<java-symbol type="integer" name="config_searchKeyBehavior" />
|
||||
<java-symbol type="string" name="config_searchKeyTargetActivity" />
|
||||
<java-symbol type="integer" name="config_windowOutsetBottom" />
|
||||
<java-symbol type="integer" name="db_connection_pool_size" />
|
||||
<java-symbol type="integer" name="db_journal_size_limit" />
|
||||
|
||||
@@ -322,6 +322,10 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
||||
static final int TRIPLE_PRESS_PRIMARY_NOTHING = 0;
|
||||
static final int TRIPLE_PRESS_PRIMARY_TOGGLE_ACCESSIBILITY = 1;
|
||||
|
||||
// Must match: config_searchKeyBehavior in config.xml
|
||||
static final int SEARCH_BEHAVIOR_DEFAULT_SEARCH = 0;
|
||||
static final int SEARCH_BEHAVIOR_TARGET_ACTIVITY = 1;
|
||||
|
||||
static public final String SYSTEM_DIALOG_REASON_KEY = "reason";
|
||||
static public final String SYSTEM_DIALOG_REASON_GLOBAL_ACTIONS = "globalactions";
|
||||
static public final String SYSTEM_DIALOG_REASON_RECENT_APPS = "recentapps";
|
||||
@@ -525,6 +529,8 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
||||
boolean mWakeOnAssistKeyPress;
|
||||
boolean mWakeOnBackKeyPress;
|
||||
long mWakeUpToLastStateTimeout;
|
||||
int mSearchKeyBehavior;
|
||||
ComponentName mSearchKeyTargetActivity;
|
||||
|
||||
private boolean mHandleVolumeKeysInWM;
|
||||
|
||||
@@ -2078,6 +2084,12 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
||||
mWakeUpToLastStateTimeout = mContext.getResources().getInteger(
|
||||
com.android.internal.R.integer.config_wakeUpToLastStateTimeoutMillis);
|
||||
|
||||
mSearchKeyBehavior = mContext.getResources().getInteger(
|
||||
com.android.internal.R.integer.config_searchKeyBehavior);
|
||||
|
||||
mSearchKeyTargetActivity = ComponentName.unflattenFromString(
|
||||
mContext.getResources().getString(
|
||||
com.android.internal.R.string.config_searchKeyTargetActivity));
|
||||
readConfigurationDependentBehaviors();
|
||||
|
||||
mDisplayFoldController = DisplayFoldController.create(context, DEFAULT_DISPLAY);
|
||||
@@ -3010,7 +3022,19 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
||||
toggleNotificationPanel();
|
||||
}
|
||||
return key_consumed;
|
||||
|
||||
case KeyEvent.KEYCODE_SEARCH:
|
||||
if (down && repeatCount == 0 && !keyguardOn()) {
|
||||
switch(mSearchKeyBehavior) {
|
||||
case SEARCH_BEHAVIOR_TARGET_ACTIVITY: {
|
||||
launchTargetSearchActivity();
|
||||
return key_consumed;
|
||||
}
|
||||
case SEARCH_BEHAVIOR_DEFAULT_SEARCH:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case KeyEvent.KEYCODE_SPACE:
|
||||
// Handle keyboard layout switching. (META + SPACE)
|
||||
if ((metaState & KeyEvent.META_META_MASK) == 0) {
|
||||
@@ -6080,4 +6104,22 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
||||
}
|
||||
}
|
||||
|
||||
private void launchTargetSearchActivity() {
|
||||
Intent intent;
|
||||
if (mSearchKeyTargetActivity != null) {
|
||||
intent = new Intent();
|
||||
intent.setComponent(mSearchKeyTargetActivity);
|
||||
} else {
|
||||
intent = new Intent(Intent.ACTION_WEB_SEARCH);
|
||||
}
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
|
||||
| Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
|
||||
try {
|
||||
startActivityAsUser(intent, UserHandle.CURRENT_OR_SELF);
|
||||
} catch (ActivityNotFoundException ignore) {
|
||||
Slog.e(TAG, "Could not resolve activity with : "
|
||||
+ intent.getComponent().flattenToString()
|
||||
+ " name.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user