离子角,如何获得SD卡的根目录?

时间:2017-05-31 20:05:42

标签: cordova ionic2 cordova-plugins

我正在使用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的新手,我没有看到我做错了什么。如果有人可以提供帮助,那真的很酷。

1 个答案:

答案 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);
});