如何将网页另存为网页存档,然后使用Android的WebView将网页存档显示为网页?

爱德华多·可乐

我正在Android Studio 3.0.1,Xubuntu 16.04 LTS中开发一个Android应用程序,使用WebView作为包含HTML,CSS,JavaScript / jQuery并使用PHP / MySQL作为后端的响应式Web应用程序的包装。几乎所有内容都按预期工作:页面完全呈现,JavaScript运行,并且sign-up / login / news-feed系统按预期工作。

但是,现在我想实现某种简单的缓存系统,以便在没有Internet连接时用户仍可以看到页面的最新可用版本。

到目前为止,我已经设法检测是否存在Internet连接。如果没有连接,WebView将显示一个本地“错误”页面,该页面存储在应用程序文件中-比默认的Android“连接错误”屏幕要好,但用户仍无法从该页面看到图像和文本。离线时的动态消息,例如在Facebook应用中。

我尝试过的方法(Java / Android Studio):

当用户打开应用程序(onCreate)时

  • 如果没有连接,请检查它试图检索的页面的本地保存版本。如果存在连接,则下次将页面另存为.mht文件:

    if (!isConnected()) {
    
        try {
    
            File file = new File(getFilesDir(), FilenameUtils.getBaseName(url));
            webView.loadUrl("file://" + file.getAbsolutePath() + ".mht");
    
        } catch (Exception e) {
    
            Toast.makeText(getApplicationContext(), "Exception detected", Toast.LENGTH_LONG).show();
    
        }
    
    } else {
    
        try {
    
            File file = new File(getFilesDir(), FilenameUtils.getBaseName(url));
            webView.loadUrl(url);
            webView.saveWebArchive("file://" + file.getAbsolutePath() + ".mht");
    
        } catch (Exception e) {
    
            Toast.makeText(getApplicationContext(), "Exception detected", Toast.LENGTH_LONG).show();
    
        }
    
    }
    

我已经尝试使用webView.saveWebArchive()具有不同的路径,包括简单/path/to/filefile:///path/to/file等等,都没有效果。我最接近在WebView上显示内容的是一堆原始MHTML,但显然它并未呈现。我还得到了“找不到文件”屏幕和纯白屏幕,上面没有任何内容。

如何正确地将WebView中的网页保存到Web存档中,然后从本地存储中检索并将其再次显示为网页?

编辑:

正如greenapps在评论中所建议的那样,我覆盖了WebViewClient中的“ onPageFinished”方法,并在其中调用了“ saveWebArchive()”:

@Override
public void onPageFinished(WebView view, String link) {

    view.saveWebArchive(path);
    showMsg("Finished loading");

}

当电话连接到Internet并且加载主页时,它确实显示“完成加载”。关闭应用程序后,断开连接并再次打开它,它现在显示的背景为空白,具有原始页面的颜色,没有更多的白色页面或错误消息。但是,没有任何图像,文字或任何东西。

绿色应用
webView.loadUrl(url); 
webView.saveWebArchive("file://" + file.getAbsolutePath() + ".mht");. 

您无法在此处保存页面。

太早了。

该页面尚未加载。

在onPageLoaded()或onPageFinished()中进行操作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章