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

Android WebView跳转浏览器问题:如何在WebView内加载Twitch链接

解决WebView跳转至浏览器而非内部加载的问题

嘿,这个问题我之前也碰到过!原因很简单:WebView默认会把外部URL请求交给系统浏览器处理,所以你需要自定义一个WebViewClient来拦截这个行为,让WebView自己加载链接。

你只需要修改你的TwitchWebView页面代码,添加以下关键配置:

  1. 先配置WebView的基础设置(比如启用JavaScript,Twitch页面大概率需要这个)
  2. 设置自定义的WebViewClient,重写shouldOverrideUrlLoading方法,让WebView自行加载URL

修改后的完整代码如下:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_twitch_web_view);
    wv = (WebView) findViewById(R.id.twitch_web_view);
    
    // 1. 配置WebView基础设置
    WebSettings webSettings = wv.getSettings();
    webSettings.setJavaScriptEnabled(true); // 启用JS,Twitch页面需要
    webSettings.setDomStorageEnabled(true); // 启用DOM存储,适配部分页面特性
    webSettings.setLoadWithOverviewMode(true);
    webSettings.setUseWideViewPort(true);
    
    // 2. 设置自定义WebViewClient,拦截URL跳转
    wv.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
            // 适配Android 7.0及以上版本
            view.loadUrl(request.getUrl().toString());
            return true;
        }

        // 兼容Android 7.0以下版本
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
    });
    
    Bundle bundle = getIntent().getExtras();
    String url = bundle.getString("url");
    if (url!= null){
        Toast.makeText(this, url, Toast.LENGTH_SHORT).show();
        wv.loadUrl(url);
    }
}

另外别忘了检查你的AndroidManifest.xml里是否添加了网络权限,没有的话加上这一行:

<uses-permission android:name="android.permission.INTERNET" />

这样设置之后,WebView就会在内部加载Twitch的链接,而不会跳转到系统浏览器了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:28:58