From bf297bcf295735d186a627acbefa68f183562070 Mon Sep 17 00:00:00 2001 From: Todd Kennedy Date: Tue, 11 Apr 2017 09:37:16 -0700 Subject: [PATCH] Allow instant app resolution for any user Change-Id: Iaf26cfda3a8226d97eb147b0a9e62f051b33e81b Fixes: 37215608 Test: Swtich to secondary user and see that instant apps resolve and launch --- .../server/pm/PackageManagerService.java | 34 ++++++++++--------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index dd3959001f449..b14f4fee98e7f 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -5727,9 +5727,6 @@ public class PackageManagerService extends IPackageManager.Stub { Intent intent, List resolvedActivities, int userId, boolean skipPackageCheck) { final int callingUser = UserHandle.getCallingUserId(); - if (callingUser != UserHandle.USER_SYSTEM) { - return false; - } if (mInstantAppResolverConnection == null) { return false; } @@ -6340,19 +6337,24 @@ public class PackageManagerService extends IPackageManager.Stub { Slog.v(TAG, "Adding ephemeral installer to the ResolveInfo list"); } final ResolveInfo ephemeralInstaller = new ResolveInfo(mInstantAppInstallerInfo); - ephemeralInstaller.activityInfo = new ActivityInfo(mInstantAppInstallerActivity); - ephemeralInstaller.activityInfo.launchToken = auxiliaryResponse.token; - ephemeralInstaller.auxiliaryInfo = auxiliaryResponse; - // make sure this resolver is the default - ephemeralInstaller.isDefault = true; - ephemeralInstaller.match = IntentFilter.MATCH_CATEGORY_SCHEME_SPECIFIC_PART - | IntentFilter.MATCH_ADJUSTMENT_NORMAL; - // add a non-generic filter - ephemeralInstaller.filter = new IntentFilter(intent.getAction()); - ephemeralInstaller.filter.addDataPath( - intent.getData().getPath(), PatternMatcher.PATTERN_LITERAL); - ephemeralInstaller.instantAppAvailable = true; - result.add(ephemeralInstaller); + final PackageSetting ps = + mSettings.mPackages.get(mInstantAppInstallerActivity.packageName); + if (ps != null) { + ephemeralInstaller.activityInfo = PackageParser.generateActivityInfo( + mInstantAppInstallerActivity, 0, ps.readUserState(userId), userId); + ephemeralInstaller.activityInfo.launchToken = auxiliaryResponse.token; + ephemeralInstaller.auxiliaryInfo = auxiliaryResponse; + // make sure this resolver is the default + ephemeralInstaller.isDefault = true; + ephemeralInstaller.match = IntentFilter.MATCH_CATEGORY_SCHEME_SPECIFIC_PART + | IntentFilter.MATCH_ADJUSTMENT_NORMAL; + // add a non-generic filter + ephemeralInstaller.filter = new IntentFilter(intent.getAction()); + ephemeralInstaller.filter.addDataPath( + intent.getData().getPath(), PatternMatcher.PATTERN_LITERAL); + ephemeralInstaller.instantAppAvailable = true; + result.add(ephemeralInstaller); + } } Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER); }