am 1c4a44e5: Do not return cross-profile intent results to a non-enabled user.

* commit '1c4a44e577c7b8316172d1bf5357d006776ae75e':
  Do not return cross-profile intent results to a non-enabled user.
This commit is contained in:
Nicolas Prevot
2015-04-29 13:35:01 +00:00
committed by Android Git Automerger

View File

@@ -3929,19 +3929,20 @@ public class PackageManagerService extends IPackageManager.Stub {
// Check for results that need to skip the current profile.
ResolveInfo resolveInfo = querySkipCurrentProfileIntents(matchingFilters, intent,
resolvedType, flags, userId);
if (resolveInfo != null) {
if (resolveInfo != null && isUserEnabled(resolveInfo.targetUserId)) {
List<ResolveInfo> result = new ArrayList<ResolveInfo>(1);
result.add(resolveInfo);
return filterIfNotPrimaryUser(result, userId);
}
// Check for cross profile results.
resolveInfo = queryCrossProfileIntents(
matchingFilters, intent, resolvedType, flags, userId);
// Check for results in the current profile.
List<ResolveInfo> result = mActivities.queryIntent(
intent, resolvedType, flags, userId);
if (resolveInfo != null) {
// Check for cross profile results.
resolveInfo = queryCrossProfileIntents(
matchingFilters, intent, resolvedType, flags, userId);
if (resolveInfo != null && isUserEnabled(resolveInfo.targetUserId)) {
result.add(resolveInfo);
Collections.sort(result, mResolvePrioritySorter);
}
@@ -3962,6 +3963,16 @@ public class PackageManagerService extends IPackageManager.Stub {
}
}
private boolean isUserEnabled(int userId) {
long callingId = Binder.clearCallingIdentity();
try {
UserInfo userInfo = sUserManager.getUserInfo(userId);
return userInfo != null && userInfo.isEnabled();
} finally {
Binder.restoreCallingIdentity(callingId);
}
}
/**
* Filter out activities with primaryUserOnly flag set, when current user is not the owner.
*