Merge "DO NOT MERGE Avoids deadlock when applying preferred activities"

am: 35dd014a79

Change-Id: I9b4646c9c0674380e37eea44a226b1b279b53f6b
This commit is contained in:
Patrick Baumann
2019-11-19 16:05:31 -08:00
committed by android-build-merger
3 changed files with 19 additions and 1 deletions

View File

@@ -414,6 +414,17 @@ public abstract class PackageManagerInternal {
public abstract List<ResolveInfo> queryIntentActivities(Intent intent,
@ResolveInfoFlags int flags, int filterCallingUid, int userId);
/**
* Retrieve all activities that can be performed for the given intent.
* @param filterCallingUid The results will be filtered in the context of this UID instead
* of the calling UID.
* @see PackageManager#queryIntentActivities(Intent, int)
*/
public abstract List<ResolveInfo> queryIntentActivities(
Intent intent, @Nullable String resolvedType, @ResolveInfoFlags int flags,
int filterCallingUid, int userId);
/**
* Retrieve all services that can be performed for the given intent.
* @see PackageManager#queryIntentServices(Intent, int)

View File

@@ -24548,6 +24548,12 @@ public class PackageManagerService extends IPackageManager.Stub
public List<ResolveInfo> queryIntentActivities(
Intent intent, int flags, int filterCallingUid, int userId) {
final String resolvedType = intent.resolveTypeIfNeeded(mContext.getContentResolver());
return queryIntentActivities(intent, resolvedType, flags, filterCallingUid, userId);
}
@Override
public List<ResolveInfo> queryIntentActivities(
Intent intent, String resolvedType, int flags, int filterCallingUid, int userId) {
return PackageManagerService.this
.queryIntentActivitiesInternal(intent, resolvedType, flags, filterCallingUid,
userId, false /*resolveForStart*/, true /*allowDynamicSplits*/);

View File

@@ -3337,7 +3337,8 @@ public final class Settings {
int flags, ComponentName cn, String scheme, PatternMatcher ssp,
IntentFilter.AuthorityEntry auth, PatternMatcher path, int userId) {
final List<ResolveInfo> ri =
pmInternal.queryIntentActivities(intent, flags, Binder.getCallingUid(), 0);
pmInternal.queryIntentActivities(
intent, intent.getType(), flags, Binder.getCallingUid(), 0);
if (PackageManagerService.DEBUG_PREFERRED) {
Log.d(TAG, "Queried " + intent + " results: " + ri);
}