我正在创建一个使用WebView打开某个网页的应用。通常情况下,我会手动下载网页并将其放入资产中,然后从那里用WebView打开它,但是这个网站包含的信息每月更改几次,这就是为什么我想让它保持最新状态。
但在保持网站最新的同时,我也希望我的用户能够在离线状态下访问该网站。
这就是我希望它发挥作用的方式:
我做了一些研究,所有我能找到的是将WebView保存在缓存中,但这是不可能的,因为我在WebView中打开的网站已禁用缓存(我没有管理权限,我无法联系网站管理员)。
我还对如何使用webview下载和显示html文件进行了大量研究,但没有任何我可以信赖的好例子。
这是我要显示和下载的页面:https://www.easistent.com/urniki/263/razredi/16515
答案 0 :(得分:0)
首先检查互联网(您可以在S.O.上找到许多已解决的问题),如果有互联网连接,请使用HttpClient获取HTML源并将其保存到外部存储。然后从webview中的外部存储加载网页。如果没有互联网连接,只需在webview中加载页面。
在互联网可用时保存和更新html源代码:
HttpClient httpclient = new DefaultHttpClient(); // Create HTTP Client
HttpGet httpget = new HttpGet("http://yoururl.com"); // Set the action you want to do
HttpResponse response = httpclient.execute(httpget); // Executeit
HttpEntity entity = response.getEntity();
InputStream is = entity.getContent(); // Create an InputStream with the response
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) // Read line by line
sb.append(line + "\n");
String resString = sb.toString(); // Result is here
is.close(); // Close the stream
File file = new File(Environment.getExternalStorageDirectory().toString()+"/Path/to/save/file/index.html");
file.createNewFile();
FileOutputStream f1 = new FileOutputStream(file, false);
PrintStream p = new PrintStream(f1);
p.print(resString);
p.close();
f1.close();
}catch(IOException e){}
编辑:正如@michaelcarrano在评论中所说,使用另一个线程在后台执行此工作。