From e9563659a5976a82c643267cd309fbb705256331 Mon Sep 17 00:00:00 2001 From: Dianne Hackborn Date: Thu, 18 Aug 2016 17:33:41 -0700 Subject: [PATCH] Fix issue #30929080: Default Assist app is set to None... ...on removing the third pary search app We weren't taking into account old style assistants when determining whether something interesting had been removed. Change-Id: I6b7b09cdf0781622924e10556d678565570dbd05 --- .../VoiceInteractionManagerService.java | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java index 43d2a1f1156cd..a04034e3f7648 100644 --- a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java +++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java @@ -535,6 +535,18 @@ public class VoiceInteractionManagerService extends SystemService { + " user=" + userHandle); } + ComponentName getCurAssistant(int userHandle) { + String curAssistant = Settings.Secure.getStringForUser( + mContext.getContentResolver(), + Settings.Secure.ASSISTANT, userHandle); + if (TextUtils.isEmpty(curAssistant)) { + return null; + } + if (DEBUG) Slog.d(TAG, "getCurAssistant curAssistant=" + curAssistant + + " user=" + userHandle); + return ComponentName.unflattenFromString(curAssistant); + } + void resetCurAssistant(int userHandle) { Settings.Secure.putStringForUser(mContext.getContentResolver(), Settings.Secure.ASSISTANT, null, userHandle); @@ -1178,6 +1190,7 @@ public class VoiceInteractionManagerService extends SystemService { synchronized (VoiceInteractionManagerServiceStub.this) { ComponentName curInteractor = getCurInteractor(userHandle); ComponentName curRecognizer = getCurRecognizer(userHandle); + ComponentName curAssistant = getCurAssistant(userHandle); if (curRecognizer == null) { // Could a new recognizer appear when we don't have one pre-installed? if (anyPackagesAppearing()) { @@ -1196,6 +1209,7 @@ public class VoiceInteractionManagerService extends SystemService { // the default config. setCurInteractor(null, userHandle); setCurRecognizer(null, userHandle); + resetCurAssistant(userHandle); initForUser(userHandle); return; } @@ -1212,6 +1226,20 @@ public class VoiceInteractionManagerService extends SystemService { return; } + if (curAssistant != null) { + int change = isPackageDisappearing(curAssistant.getPackageName()); + if (change == PACKAGE_PERMANENT_CHANGE) { + // If the currently set assistant is being removed, then we should + // reset back to the default state (which is probably that we prefer + // to have the default full voice interactor enabled). + setCurInteractor(null, userHandle); + setCurRecognizer(null, userHandle); + resetCurAssistant(userHandle); + initForUser(userHandle); + return; + } + } + // There is no interactor, so just deal with a simple recognizer. int change = isPackageDisappearing(curRecognizer.getPackageName()); if (change == PACKAGE_PERMANENT_CHANGE