我正在尝试从 Android 上的外部 SD 卡上的文件夹中读取目录和文件。cordova.file.externalRootDirectory返回的file:///storage/emulated/0/不是 SD 卡的路径。使用cordova.plugins.diagnostic.getExternalSdCardDetails()我获得了 SD 卡的根路径,但如果我尝试读取它,它会返回FileError code: 5.
Cordova 版本:9.0.0 (cordova-lib@9.0.1) Android-API 级别:22
cordova.plugins.diagnostic.getExternalSdCardDetails(function(data) {
window.resolveLocalFileSystemURL(data[0].filePath + "/",
$scope.onFSSuccess, $scope.onError);
}, console.log);
Run Code Online (Sandbox Code Playgroud)
$scope.onError 被触发返回错误 5。
this.onError = function(e) {
console.log(e);
}
Run Code Online (Sandbox Code Playgroud)
创建SD卡文件夹读取器的函数。
this.onFSSuccess = function(fileSystem) {
fs = fileSystem;
var directoryReader = fileSystem.createReader();
directoryReader.localURL = directoryReader.localURL + $scope.dirPath;
$scope.directoryReaderPath = directoryReader.localURL;
directoryReader.readEntries($scope.readerSuccess, $scope.onError);
}
Run Code Online (Sandbox Code Playgroud)
注意:我将以下行添加到 config.xml
<preference name="AndroidPersistentFileLocation" value="Compatibility" />
<preference name="AndroidExtraFilesystems" value="sdcard,cache" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" …Run Code Online (Sandbox Code Playgroud)