如何将字符串保存为html文件在缓存目录中,并从缓存目录中检索该文件,并在android studio的web视图中显示它?

r1wp621o  于 2023-03-11  发布在  Android
关注(0)|答案(1)|浏览(76)

如何将字符串保存为html文件,并在webview中检索和加载它?
我遇到的情况是,在点击API时,我得到的响应为Html格式的字符串,如下所示为字符串

<html>
    <head>
        <title> <!-- title bar --> </title>
        <!-- header for the website -->
    </head>
    <body>
       
        <!-- body section of the website -->
   
    </body>
</html>

我将这个字符串保存为该高速缓存目录中的html文件,如下所示

val htmlFile = File(
       mContext.cacheDir,
       System.currentTimeMillis().toString() + ".html"
   )
   val out = FileOutputStream(htmlFile)
   val data: ByteArray = htmlString.toByteArray()
   out.write(data)
   out.close()

并从htmlFile.absolutePath中检索该文件路径,然后在web视图中加载该路径。
这显示网页不可用的错误。
如何获取html文件的路径并加载到webview中?

**注:**当我将html文本保存为assets文件夹中的html文件并将该文件加载为字符串时,"file:///android_asset/test.html"在webview中工作。

完整代码添加如下:

/*htmlString is the string obtain from api response is in html format like 
            * <!DOCTYPE html>
                <html>
                    <head>
                        <title> <!-- title bar --> </title>
                        <!-- header for the website -->
                    </head>
                    <body>
                        <!-- body section of the website -->
                    </body>
                </html>
            */
            val htmlFile = File(
                mContext.cacheDir,
                System.currentTimeMillis().toString() + ".html"
            )
            val out = FileOutputStream(htmlFile)
            val data: ByteArray = htmlString.toByteArray()
            out.write(data)
            out.close()
            val htmlFilePath = htmlFile.absolutePath // Loading this in WebView Shows Error Webpage is not available
            requireActivity().apply {
                val intent= Intent(this, WebviewActivity::class.java)
                intent.putExtra("title", "Dummy Title")
                intent.putExtra("url", htmlFilePath)
                startActivity(intent)
            }

请为我的问题提供解决方案,谢谢

pcww981p

pcww981p1#

最后得到了该问题的解决方案

webview.apply {
   settings.allowContentAccess = true
   settings.allowFileAccess = true
}

在webview中添加此行后,从缓存目录加载html文件成功。
问题不在将文件保存到缓存目录或检索它。它是关于在webview中缺少这两行

相关问题