仅将Webview离线缓存在某些网站中会引发ERR_CACHE_MISS
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了仅将Webview离线缓存在某些网站中会引发ERR_CACHE_MISS相关的知识,希望对你有一定的参考价值。
webview中的android缓存会为某些网站(我的网站)抛出ERR_CACHE_MISS,即使在以[]插入适当的权限后也是如此)>
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <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" />
in manifest.xml
但是对于某些网站
(https://stackoverflow.com),它不会抛出任何异常,并且在我使用以下代码时不会出现异常WebView webView; ConnectivityManager connectivityManager; ProgressBar progressBar; String appCachePath; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); webView = findViewById(R.id.webView); progressBar = findViewById(R.id.progressBar); webView.setWebChromeClient(new WebChromeClient(){ @Override public void onProgressChanged(WebView view, int newProgress) { progressBar.setProgress(100); progressBar.setVisibility(View.VISIBLE); if(progressBar.getProgress()==100){ progressBar.setVisibility(View.GONE); } } }); webView.getSettings().setjavascriptEnabled(true); webView.getSettings().setDomStorageEnabled(true); appCachePath = getApplicationContext().getCacheDir().getAbsolutePath(); webView.getSettings().setAppCachePath(appCachePath); webView.getSettings().setAllowFileAccess(true); webView.getSettings().setAppCacheEnabled(true); webView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT); try { connectivityManager = (ConnectivityManager) getApplicationContext().getSystemService(Activity.CONNECTIVITY_SERVICE); if(connectivityManager.getActiveNetworkInfo() == null || !connectivityManager.getActiveNetworkInfo().isConnected()) { Log.i("err","CACHE OR NETWROK"); webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ONLY); webView.loadUrl("https://stackoverflow.com"); } else { Log.i("err","CONNECTED"); appCachePath = getApplicationContext().getCacheDir().getAbsolutePath(); webView.getSettings().setAppCachePath(appCachePath); webView.loadUrl("https://stackoverflow.com"); } } catch (Exception e) { Log.i("err","ERROR"+e.toString()); e.printStackTrace(); } }
[我已经看到Amazon,Flipkart,Instagram,Facebook android应用程序完美地缓存了脱机视图(脱机时重新打开我们的应用程序时,将检索到我们离开该应用程序的帖子)。
我认为OkHTTPClient and Retrofit
脱机缓存用于json响应,不适合在webview中进行网页渲染吗?还有其他方法可以在webview中缓存网站吗?即使在以[[
答案
您要加载的页面应该在页面顶部具有基本的html和meta标签。在索引文件中。以上是关于仅将Webview离线缓存在某些网站中会引发ERR_CACHE_MISS的主要内容,如果未能解决你的问题,请参考以下文章
Android 仅加载缓存不起作用。离线显示 WebView
Android上的react-native-webview无法使用ERR_ACCESS_DENIED加载保存在缓存目录中的本地文件[重复]