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

Android WebView点击网页超链接跳转Chrome而非内置加载的实现问题

Android WebView点击超链接跳转外部浏览器实现方案

核心修改逻辑

你当前代码中shouldOverrideUrlLoading返回false代表将URL交给WebView自身加载,只需修改该方法的逻辑,拦截用户点击的URL后跳转系统浏览器即可实现需求。

适配全版本的修改代码

import android.widget.Toast;
import android.net.Uri;
import android.content.Intent;

public class MainActivity extends Activity {
    WebView wb;
    private class HelloWebViewClient extends WebViewClient {
        // 适配Android 7.0以下版本
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            return handleUrlJump(url);
        }
        // 适配Android 7.0及以上版本
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
            return handleUrlJump(request.getUrl().toString());
        }
        // 统一处理URL跳转逻辑
        private boolean handleUrlJump(String url) {
            // 若需要保留本站点在WebView内加载,可放开下方注释的判断逻辑
            // if (url.contains("example.com")) {
            //     return false;
            // }
            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
            // 可选配置:指定跳转Chrome浏览器
            // intent.setPackage("com.android.chrome");
            if (intent.resolveActivity(getPackageManager()) != null) {
                startActivity(intent);
            } else {
                Toast.makeText(MainActivity.this, "未找到可打开链接的应用", Toast.LENGTH_SHORT).show();
            }
            return true;
        }
    }
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        wb=(WebView)findViewById(R.id.webView1);
        wb.getSettings().setJavaScriptEnabled(true);
        wb.getSettings().setLoadWithOverviewMode(true);
        wb.getSettings().setUseWideViewPort(true);
        wb.getSettings().setBuiltInZoomControls(true);
        wb.getSettings().setPluginState(WebSettings.PluginState.ON);

        wb.setWebViewClient(new HelloWebViewClient());
        wb.loadUrl("https://example.com");
    }
}

逻辑说明

  • shouldOverrideUrlLoading返回true代表URL已经被开发者自行处理,WebView不会再加载该URL
  • 若需要指定跳转Chrome浏览器,可放开代码中intent.setPackage("com.android.chrome")的注释,若用户未安装Chrome会自动 fallback 到系统默认浏览器
  • 加入resolveActivity判断是为了避免设备未安装浏览器应用时触发崩溃

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 01:09:03