Android WebView出现net::ERR_CACHE_MISS错误,请求技术帮助
问题排查与解决方案
核心问题分析
你遇到的net::ERR_CACHE_MISS错误主要由两个关键问题导致:
- 权限声明格式错误:
AndroidManifest.xml中INTERNET权限的命名空间写法错误,导致应用无法获取合法的网络访问权限 - WebView网络加载被强制禁用:代码中设置了
setBlockNetworkLoads(true),直接阻止WebView加载任何网络资源,再搭配LOAD_NO_CACHE的缓存设置,必然触发缓存缺失错误
已尝试操作的补充说明
你提到修改INTERNET权限为全大写,但实际问题出在权限的命名空间格式(冒号错误),而非大小写本身。
具体修复步骤
1. 修正AndroidManifest.xml权限配置
把错误的android:permission.INTERNET改为标准的android.permission.INTERNET,同时移除重复权限和废弃权限:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.agronotizie13"> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:usesCleartextTraffic="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
注:DELETE_CACHE_FILES和CLEAR_APP_CACHE在Android 6.0+已被系统废弃,无需声明
2. 调整MainActivity.java的WebView配置
移除setBlockNetworkLoads(true)(该设置会彻底禁止网络加载),调整缓存模式设置顺序,同时清理无用导入:
import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.webkit.WebSettings; import android.webkit.WebView; public class MainActivity extends AppCompatActivity { private WebView webView; @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); // 若无需禁用缓存,可改为LOAD_DEFAULT或LOAD_CACHE_ELSE_NETWORK webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE); // 移除阻止网络加载的错误设置 // webSettings.setBlockNetworkLoads(true); webView.loadUrl("https://agronotizie.imagelinenetwork.com/"); } }
3. 可选优化:添加WebViewClient(内部打开网页)
如果希望网页在WebView内打开而非跳转浏览器,可补充以下代码:
webView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { view.loadUrl(request.getUrl().toString()); return true; } });
验证步骤
- 执行Build -> Clean Project清理项目缓存
- 重新编译并在Android Oreo设备上运行应用
- 检查WebView是否正常加载目标网页
内容的提问来源于stack exchange,提问作者James
相关产品推荐
相关产品推荐

