Как применить функцию javaScript к файлам MHTML в Android? - PullRequest
0 голосов
/ 10 февраля 2019

Я новичок в кодировании, и теперь мне нужна помощь.Я сохраняю содержимое моего webView с помощью метода saveWebArchive (), который в 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 работает отлично, нодля киткатов и выше Изменения не применяются.Вот еще одна часть моего кода, с которой у меня возникли проблемы:

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 для сохраненного содержимого webView для kitkat и выше, то есть я могу изменить цвет шрифта файла mhtml после его загрузки.в WebView.

Спасибо за ваше внимание.

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Наконец-то я нашел решение для своей проблемы.Это использование ColorMatrixColorFilter для инвертирования цветов при загрузке webView.

0 голосов
/ 10 февраля 2019

Вы можете использовать webArchiveReader (проверьте это в GitHub) для более низких 19 API.Для KitKat и выше просто загрузите файл в webView, но формат mht не поддерживает JavaScript.

...