我是编码方面的新手,现在我需要一些帮助。 我使用saveWebArchive()方法保存webView内容,该方法在kitkat中,在此方法上方,将webView保存为mhtml格式。这是我的代码,对于这一部分我没有任何问题:
File internalStorage = getApplication().getDir("MyArchive",Context.MODE_PRIVATE);
File webUrlPath = new File(internalStorage.getAbsolutePath());
String urlFileName = webUrlPath.toString();
html_path = urlFileName + File.separator + article.Articlehtml.hashCode() +
".mht";
webView.saveWebArchive(html_path);
当我想在webView中加载保存的文件时,我使用Javascript更改字体颜色,对于kitkat的下部,它可以正常工作,但对于kitkat及以上,则不适用更改。这是我遇到问题的另一部分代码:
webView.getSettings().setDomStorageEnabled(true);
webView.getSettings().setDatabaseEnabled(true);
webView.getSettings().setJavaScriptEnabled(true);
File file = new File(html_path);
//for Kitkat and above
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT){
webView.loadUrl("file:///" + file);
}
else {
String rawData = null;
try {
rawData = getStringFromFile(html_url);
}catch (Exception e){
//e.printStackTrace();
}
webView.loadDataWithBaseURL(null, rawData,"application/x-webarchive-xml","UTF-8", null);
}
webView.setWebViewClient(new WebViewClient(){
public void onPageFinished(WebView view, String url){
view.setBackgroundColor(Color.parseColor("#212121"));
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) { webView.evaluateJavascript("document.body.style.setProperty(\"color\", \"white\");", null);
} else {
webView.loadUrl("javascript:document.body.style.setProperty(\"color\", \"white\");");
}
我希望将JavaScript应用于kitkat及更高版本中保存的webView内容,这意味着将mhtml文件加载到WebView后可以更改其字体颜色。
感谢您的关注。
答案 0 :(得分:1)
您可以使用webArchiveReader(在GitHub中进行检查)获得较低的19个API。对于KitKat及更高版本,只需以webView加载文件,但mht格式不支持JavaScript。
答案 1 :(得分:0)
最后,我找到了解决问题的办法。加载webView时,它使用ColorMatrixColorFilter反转颜色。