我正在为 Android 应用程序使用 PhoneGap 2.8.0。
需要在phonegap中使用javascript获取sdcard的完整路径,因为在我的手机中它显示位置,file:///sdcard/external_sdcard/
但在我朋友的手机中它显示file:///mnt/external_sdcard/
...
我的文件夹名称App_files
在 sdcard 中
我正在为 Android 应用程序使用 PhoneGap 2.8.0。
需要在phonegap中使用javascript获取sdcard的完整路径,因为在我的手机中它显示位置,file:///sdcard/external_sdcard/
但在我朋友的手机中它显示file:///mnt/external_sdcard/
...
我的文件夹名称App_files
在 sdcard 中
请尝试此代码..
通过window.appRootDir.fullPath
您获得完整路径,但在此之前您必须使用dirReady();
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>
Insert title here
</title>
<script type="text/javascript" src="lib/android/cordova-1.7.0.js">
</script>
<script type="text/javascript">
window.appRootDirName = "download_test";
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
console.log("device is ready");
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);
}
function fail() {
console.log("failed to get filesystem");
}
function gotFS(fileSystem) {
console.log("filesystem got");
window.fileSystem = fileSystem;
fileSystem.root.getDirectory(window.appRootDirName, {
create: true,
exclusive: false
}, dirReady, fail);
}
function dirReady(entry) {
window.appRootDir = entry;
console.log("application dir is ready");
}
downloadFile = function() {
var fileTransfer = new FileTransfer();
var url = "http://www.irs.gov/pub/irs-pdf/fw4.pdf";
var filePath = window.appRootDir.fullPath + "/test.pdf";
fileTransfer.download(
url, filePath, function(entry) {
alert("download complete: " + entry.fullPath);
}, function(error) {
alert("download error" + error.source);
});
}
</script>
</head>
<body>
<a href="#" onclick="downloadFile()">Download File</a>
</body>
</html>
您也可以通过此代码获取您的目录。phonegap 文档中的代码参考。
document.addEventListener("deviceready", onDeviceReady, false);
// device APIs are available
//
function onDeviceReady() {
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFileSystemSuccess, fail);
}
function onFileSystemSuccess(fileSystem) {
fileSystem.root.getDirectory("App_files", {create: false, exclusive: false}, onGetDirectoryWin, onGetDirectoryFail);
}
function fail(evt) {
console.log(evt.target.error.code);
}
var onGetDirectoryWin = function(parent) {
}
var onGetDirectoryFail = function() {
console.log("error getting dir")
}
最后我发现我们无法获取外部 SD 卡路径,
Environment.getExternalStorageState();
它仅返回内部 SD 卡路径
参考: http: //developer.android.com/reference/android/os/Environment.html#getExternalStorageDirectory()