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

Android 12如何强制指定链接在Chrome等浏览器中打开而非自有应用

Android 12+ 强制链接在浏览器打开解决方案

Android 12引入的App Links验证机制会将通过验证的域名默认绑定到你的应用,普通的ACTION_VIEW Intent会优先唤起绑定应用,要绕过该逻辑可使用以下实现方案:

方案1:通用浏览器唤起(不限制具体浏览器)

构造Intent时设置selector仅匹配支持http/https协议的浏览器类应用,直接跳过App Links的应用绑定匹配:

val targetUrl = "https://需要打开的目标链接"
val browserIntent = Intent(Intent.ACTION_VIEW, Uri.parse(targetUrl)).apply {
    // 限定仅匹配可处理http协议的浏览器应用
    selector = Intent(Intent.ACTION_VIEW, Uri.parse("http://"))
    addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
}
if (browserIntent.resolveActivity(packageManager) != null) {
    startActivity(browserIntent)
} else {
    // 无可用浏览器的自定义兜底逻辑
}

如果需要让用户自行选择浏览器,可使用Intent.createChooser封装上述Intent,弹出的选择列表仅会展示浏览器类应用,不会出现你的应用:

val chooser = Intent.createChooser(browserIntent, "选择浏览器打开")
startActivity(chooser)

方案2:强制唤起Chrome浏览器

如果需要固定使用Chrome打开链接,直接指定Chrome包名即可:

val targetUrl = "https://需要打开的目标链接"
val chromeIntent = Intent(Intent.ACTION_VIEW, Uri.parse(targetUrl)).apply {
    setPackage("com.android.chrome")
    addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
}
try {
    startActivity(chromeIntent)
} catch (e: ActivityNotFoundException) {
    // 未安装Chrome的兜底逻辑,可回退到方案1的通用唤起逻辑
}

注意事项

  • 不要给唤起Intent添加CATEGORY_BROWSABLE类别,否则会触发App Links匹配逻辑,重新唤起你的应用
  • 上述方案均已适配Android 13及以上系统版本,不会触发应用链接的绑定唤起逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 20:27:03