我都试过了,都做了同样的事情。有什么区别(仅用于兴趣)?
我有一个加载本地数据的 WebView,并且能够交出这样的 URL。
例子:
webView.loadUrl("file://storage/emulated/0/folder1/folder2/hello.html"
我都试过了,都做了同样的事情。有什么区别(仅用于兴趣)?
我有一个加载本地数据的 WebView,并且能够交出这样的 URL。
例子:
webView.loadUrl("file://storage/emulated/0/folder1/folder2/hello.html"
URL 定义的差异,其中架构与使用schema://
. 接下来指定路径,如果路径是绝对路径,则它以/
. Unix 上的正确 url
"file:///storage/emulated/0/folder1/folder2/hello.html"
但它可能在 Windows 上
"file://c:/storage/emulated/0/folder1/folder2/hello.html"
遵循规范file://storage/emulated/0/folder1/folder2/hello.html
是无效的。storage
这里应该代表一个主机名。
在使用文件 URI 方案时,您可以选择忽略表示路径的主机。这在我在下面引用的 wiki 页面上进行了描述。
文件 URI 采用以下形式
文件://主机/路径
其中,host 是可以访问路径的系统的完全限定域名,path 是目录/目录/.../name 形式的分层目录路径。如果省略主机,则将其视为“localhost”,即解释 URL 的机器。请注意,当省略主机时,斜杠不会被省略(“file:///foo.txt”有效,而“file://foo.txt”无效,尽管有些解释器设法处理后者)。
我的猜测是 webView.loadUrl 是宽松的,并且接受不符合规范的文件 URI。Uri.fromFile()还提供了正确格式的示例。
示例:“文件:///tmp/android.txt”
file://
是一个 URL 前缀,就像http://
or一样https://
。
如果您有三个斜杠,那么文件路径将/storage/emulated/...
不是storage/emulated/...
只有两个斜杠。
前者查找文件夹中调用storage
的/
文件夹(根文件夹)并从那里继续。
后者应该在工作目录中查找一个名为的文件夹storage
并从那里继续。我不确定为什么没有。