diff options
| author | 2023-12-08 16:22:25 +0000 | |
|---|---|---|
| committer | 2023-12-08 16:22:25 +0000 | |
| commit | 4066bfd81ed3af89ead0e04a07fb38b40fa891f9 (patch) | |
| tree | 84c630c405ddbe098856eb77332944ebd939ec95 | |
| parent | 45c41da4a361231d86f26f9f111eca952c318bb9 (diff) | |
| parent | e7b28a5d1de605938deb8bf71626631fcf663665 (diff) | |
Merge "Allow visibility to one more activity-related API." into main
| -rw-r--r-- | services/core/java/com/android/server/pm/ComputerEngine.java | 3 | ||||
| -rw-r--r-- | services/core/java/com/android/server/pm/parsing/PackageInfoUtils.java | 7 |
2 files changed, 8 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/pm/ComputerEngine.java b/services/core/java/com/android/server/pm/ComputerEngine.java index df7ceda3b2f9..2ae10051182d 100644 --- a/services/core/java/com/android/server/pm/ComputerEngine.java +++ b/services/core/java/com/android/server/pm/ComputerEngine.java @@ -895,6 +895,9 @@ public class ComputerEngine implements Computer { @PackageManager.ResolveInfoFlagsBits long flags, int filterCallingUid, int userId) { ParsedActivity a = mComponentResolver.getActivity(component); + // Allow to match activities of quarantined packages. + flags |= PackageManager.MATCH_QUARANTINED_COMPONENTS; + if (DEBUG_PACKAGE_INFO) Log.v(TAG, "getActivityInfo " + component + ": " + a); AndroidPackage pkg = a == null ? null : mPackages.get(a.getPackageName()); diff --git a/services/core/java/com/android/server/pm/parsing/PackageInfoUtils.java b/services/core/java/com/android/server/pm/parsing/PackageInfoUtils.java index d64201893400..b23dbee5e973 100644 --- a/services/core/java/com/android/server/pm/parsing/PackageInfoUtils.java +++ b/services/core/java/com/android/server/pm/parsing/PackageInfoUtils.java @@ -266,17 +266,20 @@ public class PackageInfoUtils { if ((flags & PackageManager.GET_ACTIVITIES) != 0) { final int N = pkg.getActivities().size(); if (N > 0) { + // Allow to match activities of quarantined packages. + long aflags = flags | PackageManager.MATCH_QUARANTINED_COMPONENTS; + int num = 0; final ActivityInfo[] res = new ActivityInfo[N]; for (int i = 0; i < N; i++) { final ParsedActivity a = pkg.getActivities().get(i); if (ComponentParseUtils.isMatch(state, pkgSetting.isSystem(), pkg.isEnabled(), a, - flags)) { + aflags)) { if (PackageManager.APP_DETAILS_ACTIVITY_CLASS_NAME.equals( a.getName())) { continue; } - res[num++] = generateActivityInfo(pkg, a, flags, state, + res[num++] = generateActivityInfo(pkg, a, aflags, state, applicationInfo, userId, pkgSetting); } } |