我正在使用离子框架来执行文件浏览器应用程序,但仅在SD卡中。要访问de SD卡,我将使用 file.externalrootdirectory 的文件插件,然后从该文件列表中检索到目录的列表。这是代码:
constructor(public navCtrl: NavController, private fileCtrl: File) { this.goToDir(""); } public goToDir(dir: string){ this.fileCtrl.listDir(this.fileCtrl.externalRootDirectory, dir).then( (list) => { this.loadList(list); } ); } public loadList(list: any){ for (let i=0; i<list.length; i++) { console.log(list[i].fullPath); } }
这不会返回我的SD卡中的目录,它给了我设备内部存储的目录列表(dirs = android,dcim,下载等(。
我正在Android 4.4和6.0中进行测试,并且我的离子和Cordova已更新为最新。
我是Ionic的新手,我看不到我做错了什么。如果有人可以提供帮助,那真的很酷。
这不会返回我的SD卡中的目录,它给了我设备内部存储的目录列表(dirs = android,dcim,下载等(。
从中,我假设您正在尝试访问物理外部可移动SD卡(例如在三星Galaxy S7中(,而不是"内部SD卡",因为Android引用了它,实际上是内部内存。
例如,在Android 7.1中,我的物理外部可移动SD卡路径是/storage/4975-1401/
。
我的"内部" SD卡路径是/storage/emulated/0/
。
cordova-plugin-file
无法使您访问物理外部可移动SD卡:对我而言,cordova.file.externalRootDirectory
返回file:///storage/emulated/0/
。
但是,您可以使用Cordova-Diengnostic-Plugin的GetExternalSdcardDetails((将filepath检索到物理外部可移动SD卡:
cordova.plugins.diagnostic.getExternalSdCardDetails(function(details){
details.forEach(function(detail){
if(detail.type == "root"){
cordova.file.externalSdCardRootDirectory = detail.filePath;
}
});
}, function(error){
console.error(error);
});