diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java
index 1d01420..a7dbecb 100644
--- a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java
+++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java
@@ -794,9 +794,8 @@
                 if (curService != null && !curService.isEmpty()) {
                     try {
                         serviceComponent = ComponentName.unflattenFromString(curService);
-                        serviceInfo = AppGlobals.getPackageManager()
-                                .getServiceInfo(serviceComponent, 0, mCurUser);
-                    } catch (RuntimeException | RemoteException e) {
+                        serviceInfo = getValidVoiceInteractionServiceInfo(serviceComponent);
+                    } catch (RuntimeException e) {
                         Slog.wtf(TAG, "Bad voice interaction service name " + curService, e);
                         serviceComponent = null;
                         serviceInfo = null;
@@ -834,6 +833,27 @@
             }
         }
 
+        @Nullable
+        private ServiceInfo getValidVoiceInteractionServiceInfo(
+                @Nullable ComponentName serviceComponent) {
+            if (serviceComponent == null) {
+                return null;
+            }
+            List<ResolveInfo> services = queryInteractorServices(
+                    mCurUser, serviceComponent.getPackageName());
+            for (int i = 0; i < services.size(); i++) {
+                ResolveInfo service = services.get(i);
+                VoiceInteractionServiceInfo info = new VoiceInteractionServiceInfo(
+                        mContext.getPackageManager(), service.serviceInfo);
+                ServiceInfo candidateInfo = info.getServiceInfo();
+                if (candidateInfo != null
+                        && candidateInfo.getComponentName().equals(serviceComponent)) {
+                    return candidateInfo;
+                }
+            }
+            return null;
+        }
+
         private List<ResolveInfo> queryInteractorServices(
                 @UserIdInt int user,
                 @Nullable String packageName) {
