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

Android发布者应用广告Deep linking无法应用内打开问题

核心原因

Android WebView 的默认行为就是点击页面内<a>标签链接时,抛出Intent唤起系统默认浏览器处理,不会自动在当前WebView内加载目标链接。
你提到的纯文本形式链接可以在应用内打开,是TextView自动链接识别走了应用内路由逻辑,和WebView加载广告页的链接处理逻辑完全独立,这个效果不会自动生效,必须添加额外配置代码。

实现方案
  • 第一步:给承载广告内容的WebView设置自定义WebViewClient,重写链接拦截方法,强制链接在应用内处理,不抛给系统浏览器。
    对应Java代码如下:
    webView.setWebViewClient(new WebViewClient() {
        // Android 7.0及以上版本走这个拦截
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
            String targetUrl = request.getUrl().toString();
            // 如果你要在当前广告WebView直接打开落地页,就用下面这行
            view.loadUrl(targetUrl);
            // 如果你要跳转到自己应用内的专属网页Activity(比如你已有的AdDetailActivity),就注释上面一行,写自己的页面跳转逻辑,把targetUrl传给对应页面加载即可
            return true;
        }
    
        // 兼容Android 7.0以下系统版本
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
    });
    
  • 第二步:补全WebView基础配置,避免广告素材点击事件失效:
    WebSettings webSettings = webView.getSettings();
    // 大部分广告素材依赖JS实现渲染、点击逻辑,必须开启
    webSettings.setJavaScriptEnabled(true);
    // 可选开启DOM存储,避免部分广告落地页加载异常
    webSettings.setDomStorageEnabled(true);
    
配置说明

你贴出的AndroidManifest.xml不需要额外修改,不需要新增http/https类型的intent-filter——如果加了全局的网页链接过滤规则,你的应用会被加入系统浏览器选择列表,其他App打开网页时也会弹出唤起你的应用的选项,属于不必要的配置,只需要做好WebView端的链接拦截即可。

排错提示:如果配置完之后仍有部分广告点击跳外部浏览器,一般是广告素材做了特殊scheme的跳转触发,你可以在shouldOverrideUrlLoading方法中打印所有触发跳转的url,针对性做拦截处理即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 22:03:31