我的项目的
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 是基于 Linux 的操作系统,Linux 对除外部存储(即 /sdcard/*)之外的文件名区分大小写。
assets
文件夹存在于内部存储中,因此区分大小写。另外,其他操作系统如Windows、macOS,基本上都是不区分大小写的。
查看此答案以获取更多信息。
ps。具体来说,它不依赖于操作系统,而是依赖于文件系统(如FAT、NTFS等)。以上答案依赖于操作系统的默认文件系统。