首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法打开资产网址: file:///android_asset/error.html

无法打开资产网址: file:///android_asset/error.html
EN

Stack Overflow用户
提问于 2020-06-25 12:07:42
回答 1查看 4.4K关注 0票数 1

我要在Webview中显示一个自定义错误页面,该页面存储在默认的资产文件夹C:\Users\User\StudioProjects\Appname\app\src\main\assets\error.html

onReceivedError方法的WebViewClient中,我像下面的view.loadUrl("file:///android_asset/error.html");那样加载页面

当我编码和测试它时,它工作得很好,但是奇怪的是,我再次测试了它,Webview显示了这个错误

The webpage at file:///android_asset/error.html could not be loaded because: net::ERR_FILE_NOT_FOUND

我尝试了https://stackoverflow.com/a/37994555/4722232的解决方案,它适用于html,但是我在里面有一个徽标,有同样的问题,在我得到的日志中

代码语言:javascript
运行
复制
"Not allowed to load local resource: file:///android_asset/logo.png", source: about:blank (0)

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2020-06-25 16:59:03

  1. 从资产读取文件并加载到WebView

中。

代码语言:javascript
运行
复制
val htmlFile = "file:///android_asset/file_name.extension" //e.g. index.html
webView.loadUrl(htmlFile)

资产文件夹必须位于main

  1. 从资产文件夹获取文件的内容,然后加载到WebView

中。

代码语言:javascript
运行
复制
val inputStream = assets.open("file_name.extension")
val buffer = BufferedInputStream(inputStream)
val bytes = buffer.readBytes()
val content = String(bytes)
buffer.close()
webView.loadData(String(content), "text/html", "utf-8")

  1. raw文件夹

读取该文件。

res -> raw -> file_name.extension

代码语言:javascript
运行
复制
val inputStream = resources.openRawResource(R.raw.index)
val buffer = BufferedInputStream(inputStream)
val bytes = buffer.readBytes()
val content = String(bytes)
buffer.close()
webView.loadData(String(content), "text/html", "utf-8")

您可以使用Kotlin扩展来简化此过程。

代码语言:javascript
运行
复制
assets.open("file_name.extension").bufferedReader().use { br ->
    webView.loadData(br.readText(), "text/html", "utf-8")
}

确保您的file_name.extension是小写的,并且只包含在resassets文件夹中的_。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62574958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档