在 Webview 中加载 HTML 内容并区分大小写数据

问题描述 投票:0回答:1

我的项目的

assets
文件夹中有一个 HTML 文件。我使用 webview 加载此文件:

WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setBuiltInZoomControls(true);
webView.setWebChromeClient(new WebChromeClient());

webView.loadUrl("file:///android_asset/index.html");

一切都很好。

但在某些情况下,如果我将一些数据放入具有不同字符大小写的 html 中,那么它在默认 Web 视图中不起作用,但在设备浏览器中起作用(例如 Chrome):

例如:我正在尝试使用 html 播放音频文件:

<html>
 .
 .
<audio id="mysound1" src="item/sounds/apple.mp3" autoplay></audio>
.
.
</html>

但是在

assets
文件夹中,我的文件名为:
Apple.mp3

如果我在设备浏览器中加载此 html 文件,则无论名称中是否存在大小写,都可以播放音频。但是如果我尝试在 webview 中加载这个 html 内容,那么这个文件就不会播放。我在 DDMS 中看到一个错误:

02-23 16:03:36.091: E/AndroidProtocolHandler(23303): Unable to open asset URL: file:///android_asset/item/sounds/apple.mp3

任何人都可以知道这种行为吗?设备浏览器如何加载此文件,因为名称大小写不同。我应该在 webview 中做什么来避免这种区分大小写的问题?

android html webview
1个回答
0
投票

虽然这是一个很老的问题,但我正在为未来的访客写一个答案。

Android 是基于 Linux 的操作系统,Linux 对除外部存储(即 /sdcard/*)之外的文件名区分大小写。

assets
文件夹存在于内部存储中,因此区分大小写。
我认为您已在外部存储上的“设备浏览器”中加载了 html。

另外,其他操作系统如Windows、macOS,基本上都是不区分大小写的。

查看此答案以获取更多信息。

ps。具体来说,它不依赖于操作系统,而是依赖于文件系统(如FAT、NTFS等)。以上答案依赖于操作系统的默认文件系统。

© www.soinside.com 2019 - 2024. All rights reserved.