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:
Josep del Río
2023-02-28 19:38:27 +00:00
committed by Automerger Merge Worker
3 changed files with 60 additions and 5 deletions

View File

@@ -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>

View File

@@ -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" />

View File

@@ -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.");
}
}
}