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

WebView加载网页显示空白问题求助(附代码)

WebView加载Google Maps路线页面空白的解决方法

老兄,我之前也踩过WebView加载Google Maps空白的坑,结合你给出的代码,咱们一步步来排查和解决:

1. 先检查最容易忽略的网络权限

你得确保在AndroidManifest.xml里添加了互联网权限,没有这个的话WebView根本连不上网,页面铁定空白:

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

2. 补充Google Maps需要的WebSettings配置

光开启JavaScript不够,这类复杂网页依赖更多配置,你得加上这些:

WebView view = (WebView) this.findViewById(R.id.webView);
WebSettings settings = view.getSettings();

settings.setJavaScriptEnabled(true);
// Google Maps依赖DOM存储来保存页面状态
settings.setDomStorageEnabled(true);
// Android 8.0+默认禁止混合内容,需要手动开启(如果页面有HTTP资源的话)
settings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
// 设置模拟桌面浏览器的User-Agent,避免被Google Maps拦截
settings.setUserAgentString("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36");

3. 检查自定义WebViewClient的逻辑

你写的MyBrowser类要注意别拦截正常的URL跳转,还可以加个错误监听方便排查问题:

view.setWebViewClient(new WebViewClient() {
    // 确保不拦截Google Maps的跳转请求
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }

    // 监听加载错误,打印日志快速定位问题
    @Override
    public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
        super.onReceivedError(view, errorCode, description, failingUrl);
        Log.e("WebViewDebug", "加载出错:" + description + ",目标URL:" + failingUrl);
    }
});

4. 确认URL的完整性

你给出的URL末尾是!2d19.1736147!1m5!1m1!1s0x3be7ce5ab292b941:0x...,明显被截断了!先把完整的有效URL复制到浏览器测试,确保能正常打开,再放到WebView里。比如完整的URL应该类似:

https://www.google.com/maps/dir/Mumbra,+Thane,+Maharashtra/Mazgaon,+Mumbai,+Maharashtra/@19.0890476,72.804611,11z/data=!3m1!4b1!4m14!4m13!1m5!1m1!1s0x3be7bf117349510b:0xc8148b8a43075d71!2m2!1d73.0228173!2d19.1736147!1m5!1m1!1s0x3be7ce5ab292b941:0x82e1c1d347b85945!2m2!1d72.8338825!2d18.9712778!3e0

额外提醒

  • 如果你的测试设备所在地区无法访问Google服务,那WebView肯定加载不出来,得先确认环境没问题
  • Android 10及以上版本,要确保没有启用“应用网络隔离”之类的系统限制
  • 若targetSdkVersion >=28,混合内容默认禁止,必须设置MIXED_CONTENT_ALWAYS_ALLOW或确保所有资源都是HTTPS

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:23:55