如何强制应用内deeplink链接跳转Chrome而非打开安卓应用
问题原因
你当前配置的DeepLink仅匹配路径规则,未对查询参数做限制,因此带show-checkout-modal=true的购票链接也会被App捕获。同时你使用的隐式ACTION_VIEW Intent会将所有符合匹配规则的应用(包括你自己的App)纳入可选处理列表,默认选中自身App时就会触发跳转循环。
解决方案
下面提供3种可直接落地的方案,你可以根据业务场景选择:
方案1:DeepLink入口直接拦截购票链接(改造成本最低)
在你配置DeepLink对应的目标页面/Activity的初始化逻辑最开头,先判断URI的查询参数,命中购票规则直接唤起浏览器并关闭当前页面:
// 放在目标页面 onCreate/onCreateView 最开始的位置 val uri = intent.data ?: return if (uri.getQueryParameter("show-checkout-modal") == "true") { val browserIntent = Intent(Intent.ACTION_VIEW, uri).apply { addCategory(Intent.CATEGORY_BROWSABLE) // 避免匹配到自身App `package` = null } // 校验处理应用不是自身 val resolveInfo = packageManager.resolveActivity(browserIntent, PackageManager.MATCH_DEFAULT_ONLY) if (resolveInfo?.activityInfo?.packageName == packageName) { // 匹配到自身时用选择器让用户手动选浏览器 startActivity(Intent.createChooser(browserIntent, "请选择浏览器打开")) } else { startActivity(browserIntent) } // 关闭当前页面,不要走后续业务逻辑 finish() return }
方案2:修改唤起浏览器的Intent,强制仅浏览器响应
修改你现有唤起浏览器的代码,过滤掉自身App,从源头避免唤起自身:
val targetUri = Uri.parse(localePath) val browserIntent = Intent(Intent.ACTION_VIEW, targetUri).apply { addCategory(Intent.CATEGORY_BROWSABLE) type = "text/html" } // 查询所有可处理的应用,排除自身 val availableBrowsers = packageManager.queryIntentActivities(browserIntent, 0) var targetPackage: String? = null for (info in availableBrowsers) { if (info.activityInfo.packageName != packageName) { targetPackage = info.activityInfo.packageName break } } if (targetPackage != null) { browserIntent.`package` = targetPackage startActivity(browserIntent) } else { // 无符合条件的浏览器,用系统选择器 startActivity(Intent.createChooser(browserIntent, "请选择浏览器打开")) }
方案3:调整DeepLink匹配规则,排除购票场景
如果你使用的是Navigation组件的DeepLink配置,可以新增规则限制参数,让带show-checkout-modal=true的链接匹配后直接走拦截逻辑:
<!-- 原有规则新增参数绑定 --> <deepLink app:uri="acc-web.dotoo.app/en/dotoo/{dotoo_id}?show-checkout-modal={showCheckout}" /> <!-- 在目标页面的参数声明里设置默认值 --> <argument android:name="showCheckout" app:argType="boolean" android:defaultValue="false" />
在页面初始化时判断showCheckout参数为true时直接走方案1的拦截逻辑即可。
内容的提问来源于stack exchange,提问作者Boris Kamp
相关产品推荐
相关产品推荐

