From c0cc49a4a2363331f87ad8d9efa04eb594b4833d Mon Sep 17 00:00:00 2001 From: Nikolas Havrikov Date: Mon, 25 Oct 2021 15:10:24 +0200 Subject: [PATCH] Prevent NPE in getSliceDescendants Since acquireUnstableContentProviderClient returns a nullable value, it is better to check for null to avoid an NPE and gracefully return an empty collection instead. Bug: 179684490 Test: make Change-Id: Icb6cc66a8a347e710b8f0e34e4134000de2b2663 --- core/java/android/app/slice/SliceManager.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/core/java/android/app/slice/SliceManager.java b/core/java/android/app/slice/SliceManager.java index 4da1acba39278..5497b78c3f81c 100644 --- a/core/java/android/app/slice/SliceManager.java +++ b/core/java/android/app/slice/SliceManager.java @@ -41,6 +41,7 @@ import android.os.RemoteException; import android.os.ServiceManager; import android.os.ServiceManager.ServiceNotFoundException; import android.os.UserHandle; +import android.text.TextUtils; import android.util.ArraySet; import android.util.Log; @@ -223,10 +224,15 @@ public class SliceManager { public @NonNull Collection getSliceDescendants(@NonNull Uri uri) { ContentResolver resolver = mContext.getContentResolver(); try (ContentProviderClient provider = resolver.acquireUnstableContentProviderClient(uri)) { - Bundle extras = new Bundle(); - extras.putParcelable(SliceProvider.EXTRA_BIND_URI, uri); - final Bundle res = provider.call(SliceProvider.METHOD_GET_DESCENDANTS, null, extras); - return res.getParcelableArrayList(SliceProvider.EXTRA_SLICE_DESCENDANTS); + if (provider == null) { + Log.w(TAG, TextUtils.formatSimple("Unknown URI: %s", uri)); + } else { + Bundle extras = new Bundle(); + extras.putParcelable(SliceProvider.EXTRA_BIND_URI, uri); + final Bundle res = provider.call( + SliceProvider.METHOD_GET_DESCENDANTS, null, extras); + return res.getParcelableArrayList(SliceProvider.EXTRA_SLICE_DESCENDANTS); + } } catch (RemoteException e) { Log.e(TAG, "Unable to get slice descendants", e); }