来自 `filesDir` 的 HTML 中的相对路径将不起作用

Relative paths in HTML from `filesDir` won't work

我正在尝试使用 webview.loadDataWithBaseURL(baseUrl, htmlString)filesDir 加载 html。 HTML 中的 相对路径 将不起作用,因此它加载时没有样式、javascript 和图像。

我提供的 baseUrlfile:///data/user/0/com.mydomain.app/files/folder/index.html baseUrl 更改为 file:///android_asset/folder/index.html 后问题得到解决。

注意:目前资产存在于 android_assetfilesDir 文件夹中;但我打算从 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);