diff options
| author | 2018-09-25 15:23:38 +0000 | |
|---|---|---|
| committer | 2018-10-19 16:24:19 -0400 | |
| commit | d5bed0f4b65f76f840c86b68ba2f0393db2efe8b (patch) | |
| tree | 0964c39fb8f8231143a644f7590280721cc39982 | |
| parent | 7656e1177feaff4a118f2d36f329d0cbaa5b3340 (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.java | 31 | ||||
| -rw-r--r-- | core/res/res/values/config.xml | 4 | ||||
| -rw-r--r-- | core/res/res/values/symbols.xml | 2 |
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> |