diff --git a/src/com/android/settings/slices/SettingsSliceProvider.java b/src/com/android/settings/slices/SettingsSliceProvider.java index fdae1d008de..ec60f44110a 100644 --- a/src/com/android/settings/slices/SettingsSliceProvider.java +++ b/src/com/android/settings/slices/SettingsSliceProvider.java @@ -474,18 +474,25 @@ public class SettingsSliceProvider extends SliceProvider { @VisibleForTesting boolean isPrivateSlicesNeeded(Uri uri) { - final String queryUri = getContext().getString(R.string.config_non_public_slice_query_uri); + final Context context = getContext(); + final String queryUri = context.getString(R.string.config_non_public_slice_query_uri); if (!TextUtils.isEmpty(queryUri) && TextUtils.equals(uri.toString(), queryUri)) { // check if the calling package is eligible for private slices final int callingUid = Binder.getCallingUid(); - final boolean hasPermission = getContext().checkPermission( - android.Manifest.permission.READ_SEARCH_INDEXABLES, Binder.getCallingPid(), - callingUid) == PackageManager.PERMISSION_GRANTED; - final String callingPackage = getContext().getPackageManager() - .getPackagesForUid(callingUid)[0]; - return hasPermission && TextUtils.equals(callingPackage, - getContext().getString(R.string.config_settingsintelligence_package_name)); + final boolean hasPermission = + context.checkPermission( + android.Manifest.permission.READ_SEARCH_INDEXABLES, + Binder.getCallingPid(), + callingUid) + == PackageManager.PERMISSION_GRANTED; + final String[] packages = context.getPackageManager().getPackagesForUid(callingUid); + final String callingPackage = + packages != null && packages.length > 0 ? packages[0] : null; + return hasPermission + && TextUtils.equals( + callingPackage, + context.getString(R.string.config_settingsintelligence_package_name)); } return false; }