summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Steve Elliott <steell@google.com> 2018-09-25 15:23:38 +0000
committer Steve Elliott <steell@google.com> 2018-10-19 16:24:19 -0400
commitd5bed0f4b65f76f840c86b68ba2f0393db2efe8b (patch)
tree0964c39fb8f8231143a644f7590280721cc39982
parent7656e1177feaff4a118f2d36f329d0cbaa5b3340 (diff)
DO NOT MERGE: Add configurable default setting for assistant componentname
By requiring an explicit default setting, it eliminates all ambiguous states where a disambiguation would normally be shown. With this change in place, at no point should a disambiguation be shown. Test: manual Bug: 111603898 Change-Id: Id39fdf700ed4ef08ebbc333b5452223430ac2e48 Merged-In: Id39fdf700ed4ef08ebbc333b5452223430ac2e48
-rw-r--r--core/java/com/android/internal/app/AssistUtils.java31
-rw-r--r--core/res/res/values/config.xml4
-rw-r--r--core/res/res/values/symbols.xml2
3 files changed, 35 insertions, 2 deletions
diff --git a/core/java/com/android/internal/app/AssistUtils.java b/core/java/com/android/internal/app/AssistUtils.java
index 294007946c77..6f920dea1637 100644
--- a/core/java/com/android/internal/app/AssistUtils.java
+++ b/core/java/com/android/internal/app/AssistUtils.java
@@ -32,6 +32,11 @@ import android.os.ServiceManager;
import android.provider.Settings;
import android.util.Log;
+import com.android.internal.R;
+
+import java.util.ArrayList;
+import java.util.Set;
+
/**
* Utility method for dealing with the assistant aspects of
* {@link com.android.internal.app.IVoiceInteractionManagerService IVoiceInteractionManagerService}.
@@ -40,6 +45,14 @@ public class AssistUtils {
private static final String TAG = "AssistUtils";
+ /**
+ * Sentinel value for "no default assistant specified."
+ *
+ * Empty string is already used to represent an explicit setting of No Assistant. null cannot
+ * be used because we can't represent a null value in XML.
+ */
+ private static final String UNSET = "#+UNSET";
+
private final Context mContext;
private final IVoiceInteractionManagerService mVoiceInteractionManagerService;
@@ -152,13 +165,27 @@ public class AssistUtils {
return ComponentName.unflattenFromString(setting);
}
+ final String defaultSetting = mContext.getResources().getString(
+ R.string.config_defaultAssistantComponentName);
+ if (defaultSetting != null && !defaultSetting.equals(UNSET)) {
+ return ComponentName.unflattenFromString(defaultSetting);
+ }
+
// Fallback to keep backward compatible behavior when there is no user setting.
if (activeServiceSupportsAssistGesture()) {
return getActiveServiceComponentName();
}
- Intent intent = ((SearchManager) mContext.getSystemService(Context.SEARCH_SERVICE))
- .getAssistIntent(false);
+ if (UNSET.equals(defaultSetting)) {
+ return null;
+ }
+
+ final SearchManager searchManager =
+ (SearchManager) mContext.getSystemService(Context.SEARCH_SERVICE);
+ if (searchManager == null) {
+ return null;
+ }
+ final Intent intent = searchManager.getAssistIntent(false);
PackageManager pm = mContext.getPackageManager();
ResolveInfo info = pm.resolveActivityAsUser(intent, PackageManager.MATCH_DEFAULT_ONLY,
userId);
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index 50803664d9fc..c0a663e4e8f3 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -3087,4 +3087,8 @@
booted. -->
<integer name="config_stableDeviceDisplayWidth">-1</integer>
<integer name="config_stableDeviceDisplayHeight">-1</integer>
+
+ <!-- Component name for default assistant on this device -->
+ <string name="config_defaultAssistantComponentName">#+UNSET</string>
+
</resources>
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index 15a353ba2b05..7b77330718d4 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -3078,4 +3078,6 @@
<java-symbol type="integer" name="config_stableDeviceDisplayWidth" />
<java-symbol type="integer" name="config_stableDeviceDisplayHeight" />
+
+ <java-symbol type="string" name="config_defaultAssistantComponentName" />
</resources>