You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置intent-filter实现仅非浏览器应用唤起「应用内打开」,浏览器访问不触发?

解决方案

你可以通过修改intent-filter配置实现需求,下面提供两种适配不同场景的方案:

方案1:移除BROWSABLE类别(适配90%以上常规场景)

核心逻辑:Android 系统中所有浏览器发起的页面跳转VIEW意图,都会自动添加android.intent.category.BROWSABLE类别;而Gmail、Messenger等非浏览器应用点击普通HTTPS链接发起的跳转意图,默认不会携带该类别。

你只需删除现有配置中BROWSABLE类别的声明即可,修改后配置如下:

<intent-filter>
    <data android:scheme="https"/>
    <data android:host="example.co.uk"/>
    <data android:path="/train/"/>
    <action android:name="android.intent.action.VIEW"/>
    <category android:name="android.intent.category.DEFAULT"/>
</intent-filter>

配置完成后,浏览器发起的跳转请求因为携带了BROWSABLE类别无法匹配你的过滤器,不会弹出应用打开选项;非浏览器应用的跳转请求可正常匹配,弹出打开选项。

方案2:兼容部分特殊第三方应用

如果实测发现部分社交/工具类应用点击链接也会携带BROWSABLE类别导致方案1失效,可以结合应用逻辑判断实现需求:

  1. 保留原有intent-filter的配置不变
  2. 在ActivityMain接收跳转意图的位置,添加发起方包名判断:如果发起请求的应用是浏览器,直接调用系统浏览器打开对应链接,同时销毁当前Activity即可,用户侧不会感知到中间的跳转过程,效果和浏览器直接打开一致。

补充说明

用户直接在浏览器地址栏输入目标地址的场景,无论哪种配置都不会触发应用打开逻辑,浏览器会默认内部加载页面。

内容的提问来源于stack exchange,提问作者trainmania100

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 12:45:02