diff options
| author | 2015-11-16 18:07:35 -0800 | |
|---|---|---|
| committer | 2015-11-17 18:17:57 -0800 | |
| commit | c83189b5d6ab2fe5f1c38cbe22254f4995379c88 (patch) | |
| tree | 0b0832088055142c70c6cd1448f3bc239224d49f | |
| parent | 8958c1effb5432a0cbf01acb8c578b616d76401b (diff) | |
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
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 463eb5be46f6..ebe3f47f0b02 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 f396c2dbc5f0..8fee91fdca7e 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 30296e15e638..109d214e1167 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; |