【问题标题】:Do not trigger the intent filter of same application from which an intent is fired不要触发触发意图的同一应用程序的意图过滤器
【发布时间】:2019-08-02 06:12:47
【问题描述】:

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

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

如何解决这个问题

【问题讨论】:

    标签: android performance android-intent intentfilter applinks


    【解决方案1】:

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

    PackageManager.queryIntentActivities()

    【讨论】:

    • 如何从列表中排除我自己的应用
    • 循环遍历列表并忽略自己的应用
    • 循环遍历返回的ResolveInfo 对象列表并忽略您应用的条目。您可以通过将ResolveInfo.activityInfo.packageName 与您在AndroidManifest.xml 中拥有的您自己的应用程序包名称进行比较来判断您的应用程序的条目
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-26
    • 2021-05-31
    • 2015-02-27
    • 1970-01-01
    • 1970-01-01
    • 2012-07-17
    • 1970-01-01
    相关资源
    最近更新 更多