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

Android WebView无法加载特定站点、部分站点跳转默认浏览器问题求助

问题排查与解决方案

核心问题原因

  • 未配置自定义WebViewClient:WebView默认会将页面跳转、重定向请求交给系统浏览器处理,这就是访问不带www的域名时跳转默认浏览器的直接原因
  • 未开启JavaScript支持:你代码中注释了JS开启逻辑,绝大多数现代前端站点依赖JS完成页面渲染,未开启JS会直接导致白屏
  • 缺少必要的WebView配置:包括DOM存储许可、混合内容加载许可等,都会导致部分站点无法正常加载

修复后完整代码示例

import android.os.Bundle;
import android.util.Log;
import android.webkit.WebResourceError;
import android.webkit.WebResourceRequest;
import android.webkit.SslErrorHandler;
import android.net.http.SslError;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        WebView mywebview = findViewById(R.id.webView);
        
        // 开启WebView远程调试(可选,Chrome访问chrome://inspect可查看WebView日志、网络请求)
        WebView.setWebContentsDebuggingEnabled(true);

        WebSettings webSettings = mywebview.getSettings();
        // 开启JavaScript支持,必须配置
        webSettings.setJavaScriptEnabled(true);
        // 开启DOM存储,支持站点使用localStorage等缓存能力
        webSettings.setDomStorageEnabled(true);
        // 允许HTTPS站点加载HTTP资源,Android 9+默认禁止
        webSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);

        // 设置自定义WebViewClient,所有页面跳转均在WebView内部处理
        mywebview.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
                view.loadUrl(request.getUrl().toString());
                return true;
            }

            // 捕获加载错误,可通过日志定位具体问题
            @Override
            public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
                super.onReceivedError(view, request, error);
                Log.e("WebView加载错误", "错误信息:" + error.getDescription() + ",错误码:" + error.getErrorCode());
            }

            // 测试环境如果使用自签名SSL证书可取消下方注释,生产环境必须删除避免安全风险
            /*
            @Override
            public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
                handler.proceed();
            }
            */
        });

        mywebview.loadUrl("https://example.com/j2f6/xaph1.html");
    }
}

额外排查建议

  • 如果测试站点为HTTP协议,需要在AndroidManifest.xml的<application>节点添加android:usesCleartextTraffic="true"属性,Android 9及以上系统默认禁止HTTP请求
  • 可通过之前提到的远程调试功能查看WebView的控制台输出、网络请求状态,快速定位白屏的具体原因

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 06:54:03