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
相关产品推荐
相关产品推荐

