如何通过Ionic中的Cordova File插件访问外部USB存储设备?

问题描述 投票:0回答:1

我正在Ionic中创建一个应用程序,我想在其中添加从外部存储设备读取文件的功能,这些设备通过micro USB(在Android设备上)或Lightning(在iPhone上)连接到移动设备。

在研究之后;我没有找到与File plugin不同的东西,import {Injectable} from '@angular/core'; import {File} from "@ionic-native/file"; @Injectable() export class MyClassProvider { constructor(public fileNative: File) {} public findPathOfMainUSBFolder() { let fs = this.fileNative; let folders = [fs.applicationDirectory, fs.applicationStorageDirectory, fs.cacheDirectory, fs.dataDirectory, fs.externalRootDirectory, fs.externalApplicationStorageDirectory, fs.externalCacheDirectory, fs.externalDataDirectory, "file:///storage/"]; for (let mainFolder of folders) { this.fileNative.listDir(mainFolder,'').then( success => { console.log("success ", mainFolder, "Contents: ", success); }, rej => { console.log("rej ", mainFolder, "Contents: ", rej); }).catch(err => { console.log("err ", mainFolder, "Contents: ", err); }) } } } 在移动设备上有一个很好的读/写访问API和安装在设备上的SD卡,但我还是无法读取USB闪存在手机上连接的棒。

目前我正在使用以下代码在Android设备上进行测试

available directories

循环遍历所有File Chooser,看它是否会列出USB闪存棒的内容。这些目录中没有一个指向/是USB上的根目录。

我错过了什么,或者根本无法使用File插件访问USB闪存棒?

android cordova ionic-framework io usb-drive
1个回答
0
投票

在深入了解文件系统并使用public findPathOfMainUSBFolder(callback) { let usbDevicesConnected = []; this.fileNative.listDir("file:///", "storage").then( success => { for (let entry of success) { if (entry.isDirectory == true && entry.name != "emulated" && entry.name != "self") { usbDevicesConnected.push({path: "file:///storage/", dirName: entry.name}); console.log("USB ", entry.name, " has been added to the list"); } } callback(usbDevicesConnected) }, rej => { console.log("rej file:///, storage ", "Contents: ", rej); }).catch(err => { console.log("err file:///, storage ", "Contents: ", err); }) } 帮助我识别USB上文件的完整路径之后,我最终得到了以下函数,该函数为每个连接的USB设备创建了一个包含一个对象的数组,该数组具有USB的路径:

this.findPathOfMainUSBFolder( usbArray => {
  for (let usb of usbArray) {
    this.fileNative.listDir(usb.path, usb.dirName).then( success => {
      console.log("USB with ID " + usb.dirName + " has contents: ", success)
    }, rej => {
      console.log("REJ on USB with ID " + usb.dirName + " : ", rej)
    }).catch(err => {
      console.log("ERr on USB with ID " + usb.dirName + " : ", err)
    })
  }
})

可以在下面调用以列出USB根级别上存在的所有文件:

qazxswpoi

这适用于Android手机,但我还没有在iPhone上测试过。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.