diff --git a/core/java/android/app/ApplicationPackageManager.java b/core/java/android/app/ApplicationPackageManager.java index 5b7dae67392cc..ed590e6270e44 100644 --- a/core/java/android/app/ApplicationPackageManager.java +++ b/core/java/android/app/ApplicationPackageManager.java @@ -272,12 +272,17 @@ public class ApplicationPackageManager extends PackageManager { } @Override + @SuppressWarnings("unchecked") public List queryPermissionsByGroup(String group, int flags) throws NameNotFoundException { try { - List pi = mPM.queryPermissionsByGroup(group, flags).getList(); - if (pi != null) { - return pi; + ParceledListSlice parceledList = + mPM.queryPermissionsByGroup(group, flags); + if (parceledList != null) { + List pi = parceledList.getList(); + if (pi != null) { + return pi; + } } } catch (RemoteException e) { throw e.rethrowFromSystemServer(); @@ -288,7 +293,7 @@ public class ApplicationPackageManager extends PackageManager { @Override public PermissionGroupInfo getPermissionGroupInfo(String name, - int flags) throws NameNotFoundException { + int flags) throws NameNotFoundException { try { PermissionGroupInfo pgi = mPM.getPermissionGroupInfo(name, flags); if (pgi != null) { @@ -302,9 +307,15 @@ public class ApplicationPackageManager extends PackageManager { } @Override + @SuppressWarnings("unchecked") public List getAllPermissionGroups(int flags) { try { - return mPM.getAllPermissionGroups(flags).getList(); + ParceledListSlice parceledList = + mPM.getAllPermissionGroups(flags); + if (parceledList == null) { + return Collections.emptyList(); + } + return parceledList.getList(); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } @@ -439,9 +450,15 @@ public class ApplicationPackageManager extends PackageManager { } @Override + @SuppressWarnings("unchecked") public FeatureInfo[] getSystemAvailableFeatures() { try { - final List list = mPM.getSystemAvailableFeatures().getList(); + ParceledListSlice parceledList = + mPM.getSystemAvailableFeatures(); + if (parceledList == null) { + return new FeatureInfo[0]; + } + final List list = parceledList.getList(); final FeatureInfo[] res = new FeatureInfo[list.size()]; for (int i = 0; i < res.length; i++) { res[i] = list.get(i); @@ -636,10 +653,15 @@ public class ApplicationPackageManager extends PackageManager { /** @hide */ @Override + @SuppressWarnings("unchecked") public List getInstalledPackagesAsUser(int flags, int userId) { try { - ParceledListSlice slice = mPM.getInstalledPackages(flags, userId); - return slice.getList(); + ParceledListSlice parceledList = + mPM.getInstalledPackages(flags, userId); + if (parceledList == null) { + return Collections.emptyList(); + } + return parceledList.getList(); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } @@ -651,9 +673,12 @@ public class ApplicationPackageManager extends PackageManager { String[] permissions, int flags) { final int userId = mContext.getUserId(); try { - ParceledListSlice slice = mPM.getPackagesHoldingPermissions( - permissions, flags, userId); - return slice.getList(); + ParceledListSlice parceledList = + mPM.getPackagesHoldingPermissions(permissions, flags, userId); + if (parceledList == null) { + return Collections.emptyList(); + } + return parceledList.getList(); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } @@ -664,8 +689,12 @@ public class ApplicationPackageManager extends PackageManager { public List getInstalledApplications(int flags) { final int userId = mContext.getUserId(); try { - ParceledListSlice slice = mPM.getInstalledApplications(flags, userId); - return slice.getList(); + ParceledListSlice parceledList = + mPM.getInstalledApplications(flags, userId); + if (parceledList == null) { + return Collections.emptyList(); + } + return parceledList.getList(); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } @@ -770,20 +799,25 @@ public class ApplicationPackageManager extends PackageManager { /** @hide Same as above but for a specific user */ @Override + @SuppressWarnings("unchecked") public List queryIntentActivitiesAsUser(Intent intent, - int flags, int userId) { + int flags, int userId) { try { - return mPM.queryIntentActivities( - intent, - intent.resolveTypeIfNeeded(mContext.getContentResolver()), - flags, - userId).getList(); + ParceledListSlice parceledList = + mPM.queryIntentActivities(intent, + intent.resolveTypeIfNeeded(mContext.getContentResolver()), + flags, userId); + if (parceledList == null) { + return Collections.emptyList(); + } + return parceledList.getList(); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } } @Override + @SuppressWarnings("unchecked") public List queryIntentActivityOptions( ComponentName caller, Intent[] specifics, Intent intent, int flags) { @@ -807,10 +841,13 @@ public class ApplicationPackageManager extends PackageManager { } try { - return mPM - .queryIntentActivityOptions(caller, specifics, specificTypes, intent, - intent.resolveTypeIfNeeded(resolver), flags, mContext.getUserId()) - .getList(); + ParceledListSlice parceledList = + mPM.queryIntentActivityOptions(caller, specifics, specificTypes, intent, + intent.resolveTypeIfNeeded(resolver), flags, mContext.getUserId()); + if (parceledList == null) { + return Collections.emptyList(); + } + return parceledList.getList(); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } @@ -820,13 +857,17 @@ public class ApplicationPackageManager extends PackageManager { * @hide */ @Override + @SuppressWarnings("unchecked") public List queryBroadcastReceiversAsUser(Intent intent, int flags, int userId) { try { - return mPM.queryIntentReceivers( - intent, - intent.resolveTypeIfNeeded(mContext.getContentResolver()), - flags, - userId).getList(); + ParceledListSlice parceledList = + mPM.queryIntentReceivers(intent, + intent.resolveTypeIfNeeded(mContext.getContentResolver()), + flags, userId); + if (parceledList == null) { + return Collections.emptyList(); + } + return parceledList.getList(); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } @@ -851,13 +892,17 @@ public class ApplicationPackageManager extends PackageManager { } @Override + @SuppressWarnings("unchecked") public List queryIntentServicesAsUser(Intent intent, int flags, int userId) { try { - return mPM.queryIntentServices( - intent, - intent.resolveTypeIfNeeded(mContext.getContentResolver()), - flags, - userId).getList(); + ParceledListSlice parceledList = + mPM.queryIntentServices(intent, + intent.resolveTypeIfNeeded(mContext.getContentResolver()), + flags, userId); + if (parceledList == null) { + return Collections.emptyList(); + } + return parceledList.getList(); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } @@ -869,12 +914,18 @@ public class ApplicationPackageManager extends PackageManager { } @Override + @SuppressWarnings("unchecked") public List queryIntentContentProvidersAsUser( Intent intent, int flags, int userId) { try { - return mPM.queryIntentContentProviders(intent, - intent.resolveTypeIfNeeded(mContext.getContentResolver()), flags, userId) - .getList(); + ParceledListSlice parceledList = + mPM.queryIntentContentProviders(intent, + intent.resolveTypeIfNeeded(mContext.getContentResolver()), + flags, userId); + if (parceledList == null) { + return Collections.emptyList(); + } + return parceledList.getList(); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } @@ -901,12 +952,13 @@ public class ApplicationPackageManager extends PackageManager { } @Override + @SuppressWarnings("unchecked") public List queryContentProviders(String processName, - int uid, int flags) { + int uid, int flags) { try { - ParceledListSlice slice - = mPM.queryContentProviders(processName, uid, flags); - return slice != null ? slice.getList() : null; + ParceledListSlice slice = + mPM.queryContentProviders(processName, uid, flags); + return slice != null ? slice.getList() : Collections.emptyList(); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } @@ -930,10 +982,16 @@ public class ApplicationPackageManager extends PackageManager { } @Override + @SuppressWarnings("unchecked") public List queryInstrumentation( String targetPackage, int flags) { try { - return mPM.queryInstrumentation(targetPackage, flags).getList(); + ParceledListSlice parceledList = + mPM.queryInstrumentation(targetPackage, flags); + if (parceledList == null) { + return Collections.emptyList(); + } + return parceledList.getList(); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } @@ -1575,18 +1633,30 @@ public class ApplicationPackageManager extends PackageManager { } @Override + @SuppressWarnings("unchecked") public List getIntentFilterVerifications(String packageName) { try { - return mPM.getIntentFilterVerifications(packageName).getList(); + ParceledListSlice parceledList = + mPM.getIntentFilterVerifications(packageName); + if (parceledList == null) { + return Collections.emptyList(); + } + return parceledList.getList(); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } } @Override + @SuppressWarnings("unchecked") public List getAllIntentFilters(String packageName) { try { - return mPM.getAllIntentFilters(packageName).getList(); + ParceledListSlice parceledList = + mPM.getAllIntentFilters(packageName); + if (parceledList == null) { + return Collections.emptyList(); + } + return parceledList.getList(); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); }