我有一个Android应用,可以将视频文件写入getExternalFilesDir
提供的文件夹中。当我调试应用程序时,我可以看到它们存储在/storage/emulated/0/Android/data/com.my.app/files/
文件夹中。
现在,在WebView中,如果我将HTML5视频标记指向该文件夹中的文件,它就可以工作......但它是硬编码的,所以我想通过JavaScript获取该文件夹名称(因为我认为它可能会有所不同,具体取决于在设备上。)
我一直在使用window.requestFileSystem
来获取位置,但它似乎省略了/storage/emulated/0
部分,只是给了我//Android/data/com.my.app/files/
。
我认为我遗漏了一些非常基本的东西。有什么想法/意见吗?代码如下:
复制文件的Java代码:
File path = getExternalFilesDir(null);
File file = new File(path, justTheFileName);
Log.w(TAG, "Location of File: " + file.toString());
try {
out = new FileOutputStream(file);
} catch (Exception e) {
Log.e(TAG, "ERROR WITH out = new FileOutputStream(file);");
e.printStackTrace();
}
byte[] data;
if ( in == null || out == null) {
Log.w(TAG, "Uh oh... " + justTheFileName + " has nulls...");
}
try {
data = new byte[ in .available()]; in .read(data);
out.write(data); in .close();
out.close();
} catch (IOException e1) {
e1.printStackTrace();
}
访问文件系统的JavaScript代码
function deviceIsReady() {
window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem;
var attempts = 0;
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, setFS, fail);
alert("Requested fileSystem");
}
function setFS(fileSystem) {
window.rootFS = fileSystem.root;
fileSystem.root.getDirectory("Android/data/com.my.app/files", {
create: true,
exclusive: false
}, function(dirEntry) {
alert('dirEntry');
rootPath = dirEntry.fullPath;
alert(rootPath);
// Test code.
window.location.replace(rootPath + '/my-cool-video.mp4');
}, fail);
}
我想我要问的是......如何从JavaScript中获取/storage/emulated/0
?
(请注意,应用清单XML文件具有相应的读/写权限)