Fixes query logic when not instant

What should have been the final branch of an if / else if sequence was
broken from it and so VISIBLE_TO_INSTANT activities were being made
visible to normal packages targetting R. This change fixes that.

Fixes: 151696596
Test: atest AppEnumerationTests
Change-Id: I8e60c52a1e917d56d2714fed049788439bd2acc6
This commit is contained in:
Patrick Baumann
2020-03-19 14:19:57 -07:00
parent 0fc5b145cc
commit b08116e961

View File

@@ -7240,8 +7240,8 @@ public class PackageManagerService extends IPackageManager.Stub
resolveInfos.set(i, installerInfo);
continue;
}
// caller is a full app
if (ephemeralPkgName == null) {
// caller is a full app
SettingBase callingSetting =
mSettings.getSettingLPr(UserHandle.getAppId(filterCallingUid));
PackageSetting resolvedSetting =
@@ -7261,11 +7261,9 @@ public class PackageManagerService extends IPackageManager.Stub
&& intent.getComponent() == null) {
// ephemeral apps can launch other ephemeral apps indirectly
continue;
}
// allow activities that have been explicitly exposed to ephemeral apps
final boolean isEphemeralApp = info.activityInfo.applicationInfo.isInstantApp();
if (!isEphemeralApp
&& ((info.activityInfo.flags & ActivityInfo.FLAG_VISIBLE_TO_INSTANT_APP) != 0)) {
} else if (((info.activityInfo.flags & ActivityInfo.FLAG_VISIBLE_TO_INSTANT_APP) != 0)
&& !info.activityInfo.applicationInfo.isInstantApp()) {
// allow activities that have been explicitly exposed to ephemeral apps
continue;
}
resolveInfos.remove(i);