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

Android WebView加载自定义网站空白,加载Google正常的问题求助

Android WebView加载自定义网站显示空白的解决方法

问题分析

你的WebView能正常加载Google但自定义网站显示空白,排除网络问题后,大概率是WebView的配置不匹配网站的运行要求,而非网站本身故障(毕竟浏览器能正常访问)。以下是具体排查和修复步骤:

1. 补充WebView必要配置

修改MainActivity.java中的WebSettings,添加现代网站常用的配置项:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    CustomWebViewClient client = new CustomWebViewClient(this);

    webView = findViewById(R.id.webView);
    webView.setWebViewClient(client);
    
    WebSettings settings = webView.getSettings();
    settings.setJavaScriptEnabled(true);
    // 启用DOM存储(多数现代网站依赖此功能)
    settings.setDomStorageEnabled(true);
    // 允许混合内容(如果网站包含HTTP资源,Android 9+默认禁止)
    settings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
    // 设置与桌面浏览器一致的User-Agent,避免网站拦截WebView请求
    settings.setUserAgentString("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36");
    
    webView.loadUrl("https://softcommerceltd.com/");
}

2. 启用错误日志排查

修改CustomWebViewClient,添加错误监听方法,获取具体错误信息:

class CustomWebViewClient extends WebViewClient{
    private Activity activity;
    public CustomWebViewClient(Activity activity){
        this.activity = activity;
    }

    @Override
    public boolean shouldOverrideUrlLoading(WebView webView, String url){
        return false;
    }

    @Override
    public boolean shouldOverrideUrlLoading(WebView webView, WebResourceRequest request){
        return false;
    }

    // 捕获加载错误
    @Override
    public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
        super.onReceivedError(view, request, error);
        Log.e("WebViewError", "加载错误: " + error.getDescription());
    }

    // 捕获HTTP错误
    @Override
    public void onReceivedHttpError(WebView view, WebResourceRequest request, WebResourceResponse errorResponse) {
        super.onReceivedHttpError(view, request, errorResponse);
        Log.e("WebViewHttpError", "HTTP错误码: " + errorResponse.getStatusCode());
    }
}

运行后查看Logcat中的错误信息,能精准定位问题(比如证书错误、资源加载失败等)。

3. 配置明文流量允许(若需)

如果网站内部包含HTTP协议的资源,在AndroidManifest.xml的<application>标签中添加属性:

<application
    ...
    android:usesCleartextTraffic="true">
    ...
</application>

4. 启用WebView调试

添加调试开关,可通过Chrome浏览器查看WebView的JS控制台错误:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    
    // 开启WebView调试(仅在测试环境使用)
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        WebView.setWebContentsDebuggingEnabled(true);
    }
    
    // 其他代码...
}

打开Chrome浏览器访问chrome://inspect,连接设备后即可调试WebView,查看JS报错或资源加载情况。

关于网站本身的问题

从你的描述来看,网站在浏览器能正常访问,说明网站本身无重大故障。如果上述配置仍无法解决,可检查网站是否有针对WebView的UA拦截逻辑,或是否依赖某些浏览器专属API(WebView未实现)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 07:55:06