不要触发从中触发意图的同一应用程序的意图过滤器

Do not trigger the intent filter of same application from which an intent is fired

我有一个场景,我的应用程序将通过意图过滤器捕获特定的 URL(调用主要 URL)并将此 URL 发送到 API给我一个辅助 URL 并基于这个辅助 URL 我将把用户导航到一个应用内目的地但是当 API 失败或者没有应用内目的地时用户被重定向到 web

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

如何解决这个问题

您可以查询 PackageManager 并要求它 return 您列出可以处理 link 的所有可能的应用程序。然后您可以在列表中找到另一个合适的应用程序(不包括您自己的应用程序)。如果只有一个应用,那么你可以自己直接启动它,否则你要么需要选择一个,要么让用户选择一个应用来打开它。

PackageManager.queryIntentActivities()