From 77c1f6080171bd02efe84501365495e98cae0a50 Mon Sep 17 00:00:00 2001 From: Steve Elliott Date: Tue, 25 Sep 2018 15:23:38 +0000 Subject: [PATCH] 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: Ib32dafbd3c6fcbe11186dc8ecab6b09c9b734067 Merged-In: Id39fdf700ed4ef08ebbc333b5452223430ac2e48 --- .../com/android/internal/app/AssistUtils.java | 31 +++++++++++++++++-- core/res/res/values/config.xml | 4 +++ core/res/res/values/symbols.xml | 1 + 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/core/java/com/android/internal/app/AssistUtils.java b/core/java/com/android/internal/app/AssistUtils.java index 294007946c773..6f920dea16375 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 ae7524f1f8174..4c2abea4eee4d 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -2913,4 +2913,8 @@ + + + #+UNSET + diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index 0da1f131f594e..a4771412d4764 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -3028,4 +3028,5 @@ +