Merge "When forwarding intents, ignoring the package set in the intent." into lmp-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
f52233df74
@@ -76,17 +76,19 @@ public class IntentForwarderActivity extends Activity {
|
||||
}
|
||||
Intent newIntent = new Intent(intentReceived);
|
||||
newIntent.setComponent(null);
|
||||
// Apps should not be allowed to target a specific package in the target user.
|
||||
newIntent.setPackage(null);
|
||||
newIntent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT
|
||||
|Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP);
|
||||
int callingUserId = getUserId();
|
||||
IPackageManager ipm = AppGlobals.getPackageManager();
|
||||
String resolvedType = newIntent.resolveTypeIfNeeded(getContentResolver());
|
||||
boolean canForward = false;
|
||||
Intent selector = newIntent.getSelector();
|
||||
if (selector == null) {
|
||||
selector = newIntent;
|
||||
}
|
||||
try {
|
||||
Intent selector = newIntent.getSelector();
|
||||
if (selector == null) {
|
||||
selector = newIntent;
|
||||
}
|
||||
canForward = ipm.canForwardTo(selector, resolvedType, callingUserId,
|
||||
userDest.getIdentifier());
|
||||
} catch (RemoteException e) {
|
||||
|
||||
@@ -3204,24 +3204,22 @@ public class PackageManagerService extends IPackageManager.Stub {
|
||||
if (matches.get(i).getTargetUserId() == targetUserId) return true;
|
||||
}
|
||||
}
|
||||
|
||||
ArrayList<String> packageNames = null;
|
||||
SparseArray<ArrayList<String>> fromSource =
|
||||
mSettings.mCrossProfilePackageInfo.get(sourceUserId);
|
||||
if (fromSource != null) {
|
||||
packageNames = fromSource.get(targetUserId);
|
||||
}
|
||||
if (packageNames != null && packageNames.contains(intent.getPackage())) {
|
||||
return true;
|
||||
}
|
||||
// We need the package name, so we try to resolve with the loosest flags possible
|
||||
List<ResolveInfo> resolveInfos = mActivities.queryIntent(
|
||||
intent, resolvedType, PackageManager.GET_UNINSTALLED_PACKAGES, targetUserId);
|
||||
int count = resolveInfos.size();
|
||||
for (int i = 0; i < count; i++) {
|
||||
ResolveInfo resolveInfo = resolveInfos.get(i);
|
||||
if (packageNames.contains(resolveInfo.activityInfo.packageName)) {
|
||||
return true;
|
||||
if (packageNames != null) {
|
||||
// We need the package name, so we try to resolve with the loosest flags possible
|
||||
List<ResolveInfo> resolveInfos = mActivities.queryIntent(intent, resolvedType,
|
||||
PackageManager.GET_UNINSTALLED_PACKAGES, targetUserId);
|
||||
int count = resolveInfos.size();
|
||||
for (int i = 0; i < count; i++) {
|
||||
ResolveInfo resolveInfo = resolveInfos.get(i);
|
||||
if (packageNames.contains(resolveInfo.activityInfo.packageName)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
|
||||
Reference in New Issue
Block a user