Android 不要触发从中触发意图的同一应用程序的意图筛选器

Android 不要触发从中触发意图的同一应用程序的意图筛选器,android,performance,android-intent,intentfilter,applinks,Android,Performance,Android Intent,Intentfilter,Applinks,我有一个场景,我的应用程序将捕获一个特定的URL(调用主URL)通过意向过滤器,将此URL发送到API,该API为我提供了一个辅助URL,我将根据此辅助URL将用户导航到应用内目的地。但是,当API失败或没有应用内目的地时,我希望将用户重定向到web 但是,当我尝试使用主URL将用户重定向到web时。我的意图过滤器再次被触发,它提供了在我的应用程序中打开链接的选项(我的应用程序无法处理该链接)。当用户选择总是用我的应用打开链接(在android提示符下)时,情况会变得更糟。我的应用程序总是试图捕

我有一个场景,我的应用程序将捕获一个特定的URL(调用主URL)通过意向过滤器,将此URL发送到API,该API为我提供了一个辅助URL,我将根据此辅助URL将用户导航到应用内目的地。但是,当API失败或没有应用内目的地时,我希望将用户重定向到web

但是,当我尝试使用主URL将用户重定向到web时。我的意图过滤器再次被触发,它提供了在我的应用程序中打开链接的选项(我的应用程序无法处理该链接)。当用户选择总是用我的应用打开链接(在android提示符下)时,情况会变得更糟。我的应用程序总是试图捕捉URL,它会进入一个无限循环


如何解决此问题

您可以查询
PackageManager
,并要求它返回所有可能处理此链接的应用程序的列表。然后,您可以在列表中找到另一个合适的应用程序(排除您自己的应用程序)。如果只有一个应用程序,那么您可以自己直接启动它,否则您将需要选择一个或要求用户选择一个应用程序来打开它


请参见
PackageManager.queryIntentActivities()

如何通过列表将我自己的应用程序从列表循环中排除,并通过返回的
ResolveInfo
对象列表忽略你自己的应用程序循环,以及忽略你的应用程序条目。通过将
ResolveInfo.activityInfo.packageName
与您在
AndroidManifest.xml