Android WebView项目net::ERR_CACHE_MISS错误修复求助
解决Android WebView加载网页时的net::ERR_CACHE_MISS错误
1. 补全必要权限配置
在AndroidManifest.xml中添加网络相关权限,这是WebView加载在线网页的前提:
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
若应用目标SDK为Android 9(API 28)及以上,且网站存在非HTTPS资源跳转,需在<application>标签内补充明文流量允许配置(HTTPS站点可根据实际情况选择是否添加):
<application ... android:usesCleartextTraffic="true">
2. 调整WebView缓存与核心设置
修改MainActivity.java中的WebSettings配置,优化缓存策略并开启网站依赖的基础功能:
import android.annotation.SuppressLint; import android.os.Bundle; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { private WebView webView; @SuppressLint("SetJavaScriptEnabled") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); webView = findViewById(R.id.webview); WebSettings webSettings = webView.getSettings(); webSettings.setJavaScriptEnabled(true); // 切换缓存模式,优先使用网络加载,规避缓存缺失问题 webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); // 开启DOM存储API,适配部分网站的交互需求 webSettings.setDomStorageEnabled(true); // 允许文件访问,解决缓存相关的权限限制 webSettings.setAllowFileAccess(true); // 启用数据库存储,支持网站的本地数据缓存 webSettings.setDatabaseEnabled(true); // 自定义WebViewClient,可在回调中处理加载错误 webView.setWebViewClient(new WebViewClient() { @Override public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { // 此处可添加错误页面展示等自定义逻辑 super.onReceivedError(view, errorCode, description, failingUrl); } }); webView.loadUrl("https://snoopti.de"); } }
3. 额外排查方向
- 确认设备网络连接正常,模拟器可尝试切换网络环境;
- 清理应用缓存后重新测试,避免旧缓存冲突;
- 检查网站是否存在重定向或资源加载异常,可通过Chrome调试工具排查。
内容的提问来源于stack exchange,提问作者snoopti
相关产品推荐
相关产品推荐

