Loading core/java/android/content/pm/PackageParser.java +48 −8 Original line number Original line Diff line number Diff line Loading @@ -713,6 +713,15 @@ public class PackageParser { if (!checkUseInstalledOrHidden(flags, state, p.applicationInfo) || !p.isMatch(flags)) { if (!checkUseInstalledOrHidden(flags, state, p.applicationInfo) || !p.isMatch(flags)) { return null; return null; } } final ApplicationInfo applicationInfo; if ((flags & (PackageManager.GET_ACTIVITIES | PackageManager.GET_RECEIVERS | PackageManager.GET_SERVICES | PackageManager.GET_PROVIDERS)) != 0) { applicationInfo = generateApplicationInfo(p, flags, state, userId); } else { applicationInfo = null; } PackageInfo pi = new PackageInfo(); PackageInfo pi = new PackageInfo(); pi.packageName = p.packageName; pi.packageName = p.packageName; pi.splitNames = p.splitNames; pi.splitNames = p.splitNames; Loading Loading @@ -773,7 +782,7 @@ public class PackageParser { if (PackageManager.APP_DETAILS_ACTIVITY_CLASS_NAME.equals(a.className)) { if (PackageManager.APP_DETAILS_ACTIVITY_CLASS_NAME.equals(a.className)) { continue; continue; } } res[num++] = generateActivityInfo(a, flags, state, userId); res[num++] = generateActivityInfo(a, flags, state, userId, applicationInfo); } } } } pi.activities = ArrayUtils.trimToSize(res, num); pi.activities = ArrayUtils.trimToSize(res, num); Loading @@ -787,7 +796,7 @@ public class PackageParser { for (int i = 0; i < N; i++) { for (int i = 0; i < N; i++) { final Activity a = p.receivers.get(i); final Activity a = p.receivers.get(i); if (isMatch(state, a.info, flags)) { if (isMatch(state, a.info, flags)) { res[num++] = generateActivityInfo(a, flags, state, userId); res[num++] = generateActivityInfo(a, flags, state, userId, applicationInfo); } } } } pi.receivers = ArrayUtils.trimToSize(res, num); pi.receivers = ArrayUtils.trimToSize(res, num); Loading @@ -801,7 +810,7 @@ public class PackageParser { for (int i = 0; i < N; i++) { for (int i = 0; i < N; i++) { final Service s = p.services.get(i); final Service s = p.services.get(i); if (isMatch(state, s.info, flags)) { if (isMatch(state, s.info, flags)) { res[num++] = generateServiceInfo(s, flags, state, userId); res[num++] = generateServiceInfo(s, flags, state, userId, applicationInfo); } } } } pi.services = ArrayUtils.trimToSize(res, num); pi.services = ArrayUtils.trimToSize(res, num); Loading @@ -815,7 +824,8 @@ public class PackageParser { for (int i = 0; i < N; i++) { for (int i = 0; i < N; i++) { final Provider pr = p.providers.get(i); final Provider pr = p.providers.get(i); if (isMatch(state, pr.info, flags)) { if (isMatch(state, pr.info, flags)) { res[num++] = generateProviderInfo(pr, flags, state, userId); res[num++] = generateProviderInfo(pr, flags, state, userId, applicationInfo); } } } } pi.providers = ArrayUtils.trimToSize(res, num); pi.providers = ArrayUtils.trimToSize(res, num); Loading Loading @@ -8216,6 +8226,11 @@ public class PackageParser { @UnsupportedAppUsage @UnsupportedAppUsage public static final ActivityInfo generateActivityInfo(Activity a, int flags, public static final ActivityInfo generateActivityInfo(Activity a, int flags, FrameworkPackageUserState state, int userId) { FrameworkPackageUserState state, int userId) { return generateActivityInfo(a, flags, state, userId, null); } private static ActivityInfo generateActivityInfo(Activity a, int flags, FrameworkPackageUserState state, int userId, ApplicationInfo applicationInfo) { if (a == null) return null; if (a == null) return null; if (!checkUseInstalledOrHidden(flags, state, a.owner.applicationInfo)) { if (!checkUseInstalledOrHidden(flags, state, a.owner.applicationInfo)) { return null; return null; Loading @@ -8227,7 +8242,12 @@ public class PackageParser { // Make shallow copies so we can store the metadata safely // Make shallow copies so we can store the metadata safely ActivityInfo ai = new ActivityInfo(a.info); ActivityInfo ai = new ActivityInfo(a.info); ai.metaData = a.metaData; ai.metaData = a.metaData; ai.applicationInfo = generateApplicationInfo(a.owner, flags, state, userId); if (applicationInfo == null) { applicationInfo = generateApplicationInfo(a.owner, flags, state, userId); } ai.applicationInfo = applicationInfo; return ai; return ai; } } Loading Loading @@ -8308,6 +8328,11 @@ public class PackageParser { @UnsupportedAppUsage @UnsupportedAppUsage public static final ServiceInfo generateServiceInfo(Service s, int flags, public static final ServiceInfo generateServiceInfo(Service s, int flags, FrameworkPackageUserState state, int userId) { FrameworkPackageUserState state, int userId) { return generateServiceInfo(s, flags, state, userId, null); } private static ServiceInfo generateServiceInfo(Service s, int flags, FrameworkPackageUserState state, int userId, ApplicationInfo applicationInfo) { if (s == null) return null; if (s == null) return null; if (!checkUseInstalledOrHidden(flags, state, s.owner.applicationInfo)) { if (!checkUseInstalledOrHidden(flags, state, s.owner.applicationInfo)) { return null; return null; Loading @@ -8319,7 +8344,12 @@ public class PackageParser { // Make shallow copies so we can store the metadata safely // Make shallow copies so we can store the metadata safely ServiceInfo si = new ServiceInfo(s.info); ServiceInfo si = new ServiceInfo(s.info); si.metaData = s.metaData; si.metaData = s.metaData; si.applicationInfo = generateApplicationInfo(s.owner, flags, state, userId); if (applicationInfo == null) { applicationInfo = generateApplicationInfo(s.owner, flags, state, userId); } si.applicationInfo = applicationInfo; return si; return si; } } Loading Loading @@ -8406,6 +8436,11 @@ public class PackageParser { @UnsupportedAppUsage @UnsupportedAppUsage public static final ProviderInfo generateProviderInfo(Provider p, int flags, public static final ProviderInfo generateProviderInfo(Provider p, int flags, FrameworkPackageUserState state, int userId) { FrameworkPackageUserState state, int userId) { return generateProviderInfo(p, flags, state, userId, null); } private static ProviderInfo generateProviderInfo(Provider p, int flags, FrameworkPackageUserState state, int userId, ApplicationInfo applicationInfo) { if (p == null) return null; if (p == null) return null; if (!checkUseInstalledOrHidden(flags, state, p.owner.applicationInfo)) { if (!checkUseInstalledOrHidden(flags, state, p.owner.applicationInfo)) { return null; return null; Loading @@ -8422,7 +8457,12 @@ public class PackageParser { if ((flags & PackageManager.GET_URI_PERMISSION_PATTERNS) == 0) { if ((flags & PackageManager.GET_URI_PERMISSION_PATTERNS) == 0) { pi.uriPermissionPatterns = null; pi.uriPermissionPatterns = null; } } pi.applicationInfo = generateApplicationInfo(p.owner, flags, state, userId); if (applicationInfo == null) { applicationInfo = generateApplicationInfo(p.owner, flags, state, userId); } pi.applicationInfo = applicationInfo; return pi; return pi; } } Loading Loading
core/java/android/content/pm/PackageParser.java +48 −8 Original line number Original line Diff line number Diff line Loading @@ -713,6 +713,15 @@ public class PackageParser { if (!checkUseInstalledOrHidden(flags, state, p.applicationInfo) || !p.isMatch(flags)) { if (!checkUseInstalledOrHidden(flags, state, p.applicationInfo) || !p.isMatch(flags)) { return null; return null; } } final ApplicationInfo applicationInfo; if ((flags & (PackageManager.GET_ACTIVITIES | PackageManager.GET_RECEIVERS | PackageManager.GET_SERVICES | PackageManager.GET_PROVIDERS)) != 0) { applicationInfo = generateApplicationInfo(p, flags, state, userId); } else { applicationInfo = null; } PackageInfo pi = new PackageInfo(); PackageInfo pi = new PackageInfo(); pi.packageName = p.packageName; pi.packageName = p.packageName; pi.splitNames = p.splitNames; pi.splitNames = p.splitNames; Loading Loading @@ -773,7 +782,7 @@ public class PackageParser { if (PackageManager.APP_DETAILS_ACTIVITY_CLASS_NAME.equals(a.className)) { if (PackageManager.APP_DETAILS_ACTIVITY_CLASS_NAME.equals(a.className)) { continue; continue; } } res[num++] = generateActivityInfo(a, flags, state, userId); res[num++] = generateActivityInfo(a, flags, state, userId, applicationInfo); } } } } pi.activities = ArrayUtils.trimToSize(res, num); pi.activities = ArrayUtils.trimToSize(res, num); Loading @@ -787,7 +796,7 @@ public class PackageParser { for (int i = 0; i < N; i++) { for (int i = 0; i < N; i++) { final Activity a = p.receivers.get(i); final Activity a = p.receivers.get(i); if (isMatch(state, a.info, flags)) { if (isMatch(state, a.info, flags)) { res[num++] = generateActivityInfo(a, flags, state, userId); res[num++] = generateActivityInfo(a, flags, state, userId, applicationInfo); } } } } pi.receivers = ArrayUtils.trimToSize(res, num); pi.receivers = ArrayUtils.trimToSize(res, num); Loading @@ -801,7 +810,7 @@ public class PackageParser { for (int i = 0; i < N; i++) { for (int i = 0; i < N; i++) { final Service s = p.services.get(i); final Service s = p.services.get(i); if (isMatch(state, s.info, flags)) { if (isMatch(state, s.info, flags)) { res[num++] = generateServiceInfo(s, flags, state, userId); res[num++] = generateServiceInfo(s, flags, state, userId, applicationInfo); } } } } pi.services = ArrayUtils.trimToSize(res, num); pi.services = ArrayUtils.trimToSize(res, num); Loading @@ -815,7 +824,8 @@ public class PackageParser { for (int i = 0; i < N; i++) { for (int i = 0; i < N; i++) { final Provider pr = p.providers.get(i); final Provider pr = p.providers.get(i); if (isMatch(state, pr.info, flags)) { if (isMatch(state, pr.info, flags)) { res[num++] = generateProviderInfo(pr, flags, state, userId); res[num++] = generateProviderInfo(pr, flags, state, userId, applicationInfo); } } } } pi.providers = ArrayUtils.trimToSize(res, num); pi.providers = ArrayUtils.trimToSize(res, num); Loading Loading @@ -8216,6 +8226,11 @@ public class PackageParser { @UnsupportedAppUsage @UnsupportedAppUsage public static final ActivityInfo generateActivityInfo(Activity a, int flags, public static final ActivityInfo generateActivityInfo(Activity a, int flags, FrameworkPackageUserState state, int userId) { FrameworkPackageUserState state, int userId) { return generateActivityInfo(a, flags, state, userId, null); } private static ActivityInfo generateActivityInfo(Activity a, int flags, FrameworkPackageUserState state, int userId, ApplicationInfo applicationInfo) { if (a == null) return null; if (a == null) return null; if (!checkUseInstalledOrHidden(flags, state, a.owner.applicationInfo)) { if (!checkUseInstalledOrHidden(flags, state, a.owner.applicationInfo)) { return null; return null; Loading @@ -8227,7 +8242,12 @@ public class PackageParser { // Make shallow copies so we can store the metadata safely // Make shallow copies so we can store the metadata safely ActivityInfo ai = new ActivityInfo(a.info); ActivityInfo ai = new ActivityInfo(a.info); ai.metaData = a.metaData; ai.metaData = a.metaData; ai.applicationInfo = generateApplicationInfo(a.owner, flags, state, userId); if (applicationInfo == null) { applicationInfo = generateApplicationInfo(a.owner, flags, state, userId); } ai.applicationInfo = applicationInfo; return ai; return ai; } } Loading Loading @@ -8308,6 +8328,11 @@ public class PackageParser { @UnsupportedAppUsage @UnsupportedAppUsage public static final ServiceInfo generateServiceInfo(Service s, int flags, public static final ServiceInfo generateServiceInfo(Service s, int flags, FrameworkPackageUserState state, int userId) { FrameworkPackageUserState state, int userId) { return generateServiceInfo(s, flags, state, userId, null); } private static ServiceInfo generateServiceInfo(Service s, int flags, FrameworkPackageUserState state, int userId, ApplicationInfo applicationInfo) { if (s == null) return null; if (s == null) return null; if (!checkUseInstalledOrHidden(flags, state, s.owner.applicationInfo)) { if (!checkUseInstalledOrHidden(flags, state, s.owner.applicationInfo)) { return null; return null; Loading @@ -8319,7 +8344,12 @@ public class PackageParser { // Make shallow copies so we can store the metadata safely // Make shallow copies so we can store the metadata safely ServiceInfo si = new ServiceInfo(s.info); ServiceInfo si = new ServiceInfo(s.info); si.metaData = s.metaData; si.metaData = s.metaData; si.applicationInfo = generateApplicationInfo(s.owner, flags, state, userId); if (applicationInfo == null) { applicationInfo = generateApplicationInfo(s.owner, flags, state, userId); } si.applicationInfo = applicationInfo; return si; return si; } } Loading Loading @@ -8406,6 +8436,11 @@ public class PackageParser { @UnsupportedAppUsage @UnsupportedAppUsage public static final ProviderInfo generateProviderInfo(Provider p, int flags, public static final ProviderInfo generateProviderInfo(Provider p, int flags, FrameworkPackageUserState state, int userId) { FrameworkPackageUserState state, int userId) { return generateProviderInfo(p, flags, state, userId, null); } private static ProviderInfo generateProviderInfo(Provider p, int flags, FrameworkPackageUserState state, int userId, ApplicationInfo applicationInfo) { if (p == null) return null; if (p == null) return null; if (!checkUseInstalledOrHidden(flags, state, p.owner.applicationInfo)) { if (!checkUseInstalledOrHidden(flags, state, p.owner.applicationInfo)) { return null; return null; Loading @@ -8422,7 +8457,12 @@ public class PackageParser { if ((flags & PackageManager.GET_URI_PERMISSION_PATTERNS) == 0) { if ((flags & PackageManager.GET_URI_PERMISSION_PATTERNS) == 0) { pi.uriPermissionPatterns = null; pi.uriPermissionPatterns = null; } } pi.applicationInfo = generateApplicationInfo(p.owner, flags, state, userId); if (applicationInfo == null) { applicationInfo = generateApplicationInfo(p.owner, flags, state, userId); } pi.applicationInfo = applicationInfo; return pi; return pi; } } Loading