diff --git a/core/java/android/app/InstantAppResolverService.java b/core/java/android/app/InstantAppResolverService.java index 76a36820ed83a..2ba4c00c3f469 100644 --- a/core/java/android/app/InstantAppResolverService.java +++ b/core/java/android/app/InstantAppResolverService.java @@ -88,7 +88,7 @@ public abstract class InstantAppResolverService extends Service { public void onGetInstantAppResolveInfo(Intent sanitizedIntent, int[] hostDigestPrefix, String token, InstantAppResolutionCallback callback) { // if not overridden, forward to old methods and filter out non-web intents - if (sanitizedIntent.isBrowsableWebIntent()) { + if (sanitizedIntent.isWebIntent()) { onGetInstantAppResolveInfo(hostDigestPrefix, token, callback); } else { callback.onInstantAppResolveInfo(Collections.emptyList()); @@ -107,7 +107,7 @@ public abstract class InstantAppResolverService extends Service { String token, InstantAppResolutionCallback callback) { Log.e(TAG, "New onGetInstantAppIntentFilter is not overridden"); // if not overridden, forward to old methods and filter out non-web intents - if (sanitizedIntent.isBrowsableWebIntent()) { + if (sanitizedIntent.isWebIntent()) { onGetInstantAppIntentFilter(hostDigestPrefix, token, callback); } else { callback.onInstantAppResolveInfo(Collections.emptyList()); diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java index 9b62f192ae62c..fa73e3cbab997 100644 --- a/core/java/android/content/Intent.java +++ b/core/java/android/content/Intent.java @@ -10089,9 +10089,8 @@ public class Intent implements Parcelable, Cloneable { } /** @hide */ - public boolean isBrowsableWebIntent() { + public boolean isWebIntent() { return ACTION_VIEW.equals(mAction) - && hasCategory(CATEGORY_BROWSABLE) && hasWebURI(); } diff --git a/core/java/com/android/internal/app/ResolverListController.java b/core/java/com/android/internal/app/ResolverListController.java index 1dfff5efcab52..6bd693061a85f 100644 --- a/core/java/com/android/internal/app/ResolverListController.java +++ b/core/java/com/android/internal/app/ResolverListController.java @@ -106,7 +106,7 @@ public class ResolverListController { int flags = PackageManager.MATCH_DEFAULT_ONLY | (shouldGetResolvedFilter ? PackageManager.GET_RESOLVED_FILTER : 0) | (shouldGetActivityMetadata ? PackageManager.GET_META_DATA : 0); - if (intent.isBrowsableWebIntent() + if (intent.isWebIntent() || (intent.getFlags() & Intent.FLAG_ACTIVITY_MATCH_EXTERNAL) != 0) { flags |= PackageManager.MATCH_INSTANT; } diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java index 77f6d44e66700..a0f31cd213b7a 100644 --- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java +++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java @@ -1266,7 +1266,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D Trace.traceBegin(TRACE_TAG_ACTIVITY_MANAGER, "resolveIntent"); int modifiedFlags = flags | PackageManager.MATCH_DEFAULT_ONLY | ActivityManagerService.STOCK_PM_FLAGS; - if (intent.isBrowsableWebIntent() + if (intent.isWebIntent() || (intent.getFlags() & Intent.FLAG_ACTIVITY_MATCH_EXTERNAL) != 0) { modifiedFlags |= PackageManager.MATCH_INSTANT; } diff --git a/services/core/java/com/android/server/pm/InstantAppResolver.java b/services/core/java/com/android/server/pm/InstantAppResolver.java index af446ba029140..6e898bb999870 100644 --- a/services/core/java/com/android/server/pm/InstantAppResolver.java +++ b/services/core/java/com/android/server/pm/InstantAppResolver.java @@ -377,7 +377,7 @@ public abstract class InstantAppResolver { failureIntent.setFlags(failureIntent.getFlags() | Intent.FLAG_IGNORE_EPHEMERAL); failureIntent.setLaunchToken(token); ArrayList filters = null; - boolean isWebIntent = origIntent.isBrowsableWebIntent(); + boolean isWebIntent = origIntent.isWebIntent(); for (InstantAppResolveInfo instantAppResolveInfo : instantAppResolveInfoList) { if (shaPrefix.length > 0 && instantAppResolveInfo.shouldLetInstallerDecide()) { Slog.e(TAG, "InstantAppResolveInfo with mShouldLetInstallerDecide=true when digest" @@ -448,7 +448,7 @@ public abstract class InstantAppResolver { instantAppInfo.getIntentFilters(); if (instantAppFilters == null || instantAppFilters.isEmpty()) { // No filters on web intent; no matches, 2nd phase unnecessary. - if (origIntent.isBrowsableWebIntent()) { + if (origIntent.isWebIntent()) { return null; } // No filters; we need to start phase two diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 81663321881cc..2816bbd36b0bc 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -5972,7 +5972,7 @@ public class PackageManagerService extends IPackageManager.Stub if (!skipPackageCheck && intent.getPackage() != null) { return false; } - if (!intent.isBrowsableWebIntent()) { + if (!intent.isWebIntent()) { // for non web intents, we should not resolve externally if an app already exists to // handle it or if the caller didn't explicitly request it. if ((resolvedActivities != null && resolvedActivities.size() != 0) @@ -6683,7 +6683,7 @@ public class PackageManagerService extends IPackageManager.Stub ai.packageName, ai.versionCode, null /* splitName */); } } - if (intent.isBrowsableWebIntent() && auxiliaryResponse == null) { + if (intent.isWebIntent() && auxiliaryResponse == null) { return result; } final PackageSetting ps = mSettings.mPackages.get(mInstantAppInstallerActivity.packageName);