diff options
| author | 2016-11-02 12:13:27 +0000 | |
|---|---|---|
| committer | 2016-11-02 12:13:30 +0000 | |
| commit | fc686becb9851aa009512c285d489d5f8cf209ef (patch) | |
| tree | 678ad4530b5f9761eec95caf619aedd92dd3eea2 | |
| parent | 3694d8789f579f9a67ca79238b755e18b7c12b77 (diff) | |
| parent | 9f2c93663c2de84f958eebef96a98458ebaf51a9 (diff) | |
Merge "Cross profile candidate should be considered"
| -rw-r--r-- | services/core/java/com/android/server/pm/PackageManagerService.java | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 59c4fb9e7591..57aa38d1728b 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -5422,15 +5422,23 @@ public class PackageManagerService extends IPackageManager.Stub { result.remove(xpResolveInfo); } if (result.size() == 0 && !addEphemeral) { + // No result in current profile, but found candidate in parent user. + // And we are not going to add emphemeral app, so we can return the + // result straight away. result.add(xpDomainInfo.resolveInfo); return result; } - } - if (result.size() > 1 || addEphemeral) { - result = filterCandidatesWithDomainPreferredActivitiesLPr( - intent, flags, result, xpDomainInfo, userId); - sortResult = true; - } + } else if (result.size() <= 1 && !addEphemeral) { + // No result in parent user and <= 1 result in current profile, and we + // are not going to add emphemeral app, so we can return the result without + // further processing. + return result; + } + // We have more than one candidate (combining results from current and parent + // profile), so we need filtering and sorting. + result = filterCandidatesWithDomainPreferredActivitiesLPr( + intent, flags, result, xpDomainInfo, userId); + sortResult = true; } } else { final PackageParser.Package pkg = mPackages.get(pkgName); |