我正在使用Ionic框架来制作文件浏览器应用程序,但仅限于SD卡内。要访问de SD卡我正在使用带有 File.externalRootDirectory 的File插件,并从中检索它的目录列表。这是代码:
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测试,我将Ionic和Cordova更新到最新版本。
我是Ionic的新手,我没有看到我做错了什么。如果有人可以提供帮助,那真的很酷。
答案 0 :(得分:0)
这不会返回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/
。
但是,您可以使用getExternalSdCardDetails()的cordova-diagnostic-plugin来检索物理外部可移动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);
});