来自 `filesDir` 的 HTML 中的相对路径将不起作用
Relative paths in HTML from `filesDir` won't work
我正在尝试使用 webview.loadDataWithBaseURL(baseUrl, htmlString)
从 filesDir
加载 html。 HTML 中的 相对路径 将不起作用,因此它加载时没有样式、javascript 和图像。
我提供的 baseUrl
是 file:///data/user/0/com.mydomain.app/files/folder/index.html
baseUrl
更改为 file:///android_asset/folder/index.html
后问题得到解决。
注意:目前资产存在于 android_asset
和 filesDir
文件夹中;但我打算从 android_asset
文件夹中删除资产。
在App文件结构中
main
assets
folder
index.html
utils
style.css
script.js
images
image.jpg
java
res
filesDir
(持久文件)结构
com.mydomain.app
cache
files
folder
index.html
utils
style.css
script.js
images
image.jpg
index.html 的内容作为 htmlString
传递。
<head>
<link rel="stylesheet" href="../utils/style.css"/>
</head>
<body>
<img src="../images/image.jpg"/>
<script src="../utils/script.css" />
</body>
我认为您需要在 WebSettings
中调用 setAllowFileAccess
才能启用对 file://
URL 的访问,因为它们在 API 30 及更高版本中默认被禁用。
webview.getSettings().setAllowFileAccess(true);
我正在尝试使用 webview.loadDataWithBaseURL(baseUrl, htmlString)
从 filesDir
加载 html。 HTML 中的 相对路径 将不起作用,因此它加载时没有样式、javascript 和图像。
我提供的 baseUrl
是 file:///data/user/0/com.mydomain.app/files/folder/index.html
baseUrl
更改为 file:///android_asset/folder/index.html
后问题得到解决。
注意:目前资产存在于 android_asset
和 filesDir
文件夹中;但我打算从 android_asset
文件夹中删除资产。
在App文件结构中
main
assets
folder
index.html
utils
style.css
script.js
images
image.jpg
java
res
filesDir
(持久文件)结构
com.mydomain.app
cache
files
folder
index.html
utils
style.css
script.js
images
image.jpg
index.html 的内容作为 htmlString
传递。
<head>
<link rel="stylesheet" href="../utils/style.css"/>
</head>
<body>
<img src="../images/image.jpg"/>
<script src="../utils/script.css" />
</body>
我认为您需要在 WebSettings
中调用 setAllowFileAccess
才能启用对 file://
URL 的访问,因为它们在 API 30 及更高版本中默认被禁用。
webview.getSettings().setAllowFileAccess(true);