From c83189b5d6ab2fe5f1c38cbe22254f4995379c88 Mon Sep 17 00:00:00 2001 From: Dianne Hackborn Date: Mon, 16 Nov 2015 18:07:35 -0800 Subject: [PATCH] Fix issue #25673462: Shamu update from MMB29J -> 29K does not complete The direct path to the package manager returns null on failure, oops! Change-Id: Id33ea299b605a59b0703dab200bafb754dd66e78 --- .../voice/VoiceInteractionServiceInfo.java | 18 +++++++++++++++--- .../VoiceInteractionManagerService.java | 1 - .../VoiceInteractionManagerServiceImpl.java | 2 +- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/core/java/android/service/voice/VoiceInteractionServiceInfo.java b/core/java/android/service/voice/VoiceInteractionServiceInfo.java index 463eb5be46f61..ebe3f47f0b021 100644 --- a/core/java/android/service/voice/VoiceInteractionServiceInfo.java +++ b/core/java/android/service/voice/VoiceInteractionServiceInfo.java @@ -52,9 +52,21 @@ public class VoiceInteractionServiceInfo { } public VoiceInteractionServiceInfo(PackageManager pm, ComponentName comp, int userHandle) - throws PackageManager.NameNotFoundException, RemoteException { - this(pm, AppGlobals.getPackageManager().getServiceInfo(comp, - PackageManager.GET_META_DATA, userHandle)); + throws PackageManager.NameNotFoundException { + this(pm, getServiceInfoOrThrow(comp, userHandle)); + } + + static ServiceInfo getServiceInfoOrThrow(ComponentName comp, int userHandle) + throws PackageManager.NameNotFoundException { + try { + ServiceInfo si = AppGlobals.getPackageManager().getServiceInfo(comp, + PackageManager.GET_META_DATA, userHandle); + if (si != null) { + return si; + } + } catch (RemoteException e) { + } + throw new PackageManager.NameNotFoundException(comp.toString()); } public VoiceInteractionServiceInfo(PackageManager pm, ServiceInfo si) { diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java index f396c2dbc5f01..8fee91fdca7ec 100644 --- a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java +++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java @@ -362,7 +362,6 @@ public class VoiceInteractionManagerService extends SystemService { } } catch (PackageManager.NameNotFoundException e) { Slog.w(TAG, "Failure looking up interaction service " + comp); - } catch (RemoteException e) { } } } diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl.java index 30296e15e6384..109d214e11672 100644 --- a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl.java +++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl.java @@ -116,7 +116,7 @@ class VoiceInteractionManagerServiceImpl implements VoiceInteractionSessionConne VoiceInteractionServiceInfo info; try { info = new VoiceInteractionServiceInfo(context.getPackageManager(), service, mUser); - } catch (RemoteException|PackageManager.NameNotFoundException e) { + } catch (PackageManager.NameNotFoundException e) { Slog.w(TAG, "Voice interaction service not found: " + service, e); mInfo = null; mSessionComponentName = null;