Do not return cross-profile intent results to a non-enabled user.
In PackageManagerService.queryIntentActivities, do not return ResolveInfos targeting a user which is not enabled. BUG:19578138 Change-Id: Id4e730ca8671c26f8cf077bc9c66b3dbd37be482
This commit is contained in:
committed by
Nicolas Prévot
parent
c4aa3c781a
commit
1c4a44e577
@@ -3929,19 +3929,20 @@ public class PackageManagerService extends IPackageManager.Stub {
|
|||||||
// Check for results that need to skip the current profile.
|
// Check for results that need to skip the current profile.
|
||||||
ResolveInfo resolveInfo = querySkipCurrentProfileIntents(matchingFilters, intent,
|
ResolveInfo resolveInfo = querySkipCurrentProfileIntents(matchingFilters, intent,
|
||||||
resolvedType, flags, userId);
|
resolvedType, flags, userId);
|
||||||
if (resolveInfo != null) {
|
if (resolveInfo != null && isUserEnabled(resolveInfo.targetUserId)) {
|
||||||
List<ResolveInfo> result = new ArrayList<ResolveInfo>(1);
|
List<ResolveInfo> result = new ArrayList<ResolveInfo>(1);
|
||||||
result.add(resolveInfo);
|
result.add(resolveInfo);
|
||||||
return filterIfNotPrimaryUser(result, userId);
|
return filterIfNotPrimaryUser(result, userId);
|
||||||
}
|
}
|
||||||
// Check for cross profile results.
|
|
||||||
resolveInfo = queryCrossProfileIntents(
|
|
||||||
matchingFilters, intent, resolvedType, flags, userId);
|
|
||||||
|
|
||||||
// Check for results in the current profile.
|
// Check for results in the current profile.
|
||||||
List<ResolveInfo> result = mActivities.queryIntent(
|
List<ResolveInfo> result = mActivities.queryIntent(
|
||||||
intent, resolvedType, flags, userId);
|
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);
|
result.add(resolveInfo);
|
||||||
Collections.sort(result, mResolvePrioritySorter);
|
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.
|
* Filter out activities with primaryUserOnly flag set, when current user is not the owner.
|
||||||
*
|
*
|
||||||
|
|||||||
Reference in New Issue
Block a user