2014-06-06 39 views
24

因此,我將這個小電纜插入手機,在另一側插入USB端口,例如您可以插入閃存驅動器,如下所示:訪問android中的USB海量存儲設備

enter image description here

當我插上閃存驅動器,我得到的通知,上面寫着:

USB大容量存儲連接

當我然後啓動一個文件瀏覽器應用程序,我可以看到該驅動器則位於:

/存儲/ UsbDriveA/

這是偉大的,但我想知道如何獲得訪問我的代碼中的閃存驅動器。訪問SD卡很容易:

File sdCard = Environment.getExternalStorageDirectory(); 
File directory = new File (sdCard.getAbsolutePath() + "/MyFiles") 
directory.mkdirs(); 

但是,你會如何做到這一點在閃存驅動器的情況下?提前致謝! :)

+0

哇什麼手機,有一個USB端口?? – DnR

+0

哈哈我會用我正在使用的電纜圖片更新我的問題。 – Tiwaz89

+0

啊,我明白了。我認爲手機上有一個_Female_ USB端口,可直接插入電纜而不需要電纜-_- – DnR

回答

8

在這個例子中,我使用Apache的文件實用程序,但事件沒有它,你會看到用來讀取USB閃存驅動器的邏輯:

private UsbManager usbManager; 
private UsbDevice clef; 
ArrayList<File> images; 

usbManager = (UsbManager) getSystemService(Context.USB_SERVICE); 
clef = null; 

if (usbManager != null) 
{ 
    HashMap<String,UsbDevice> deviceList = usbManager.getDeviceList(); 
    if (deviceList != null) 
    { 
     Iterator<UsbDevice> deviceIterator = deviceList.values().iterator(); 
     while (deviceIterator.hasNext()) { 
      clef = deviceIterator.next(); 
     } 
    } 
} 

if (clef != null) 
{ 
    File directory = new File("/storage/UsbDriveA/"); 
    if (directory != null) { 
     if (directory.canRead()) { 

      images = new ArrayList<File>(); 
      String[] imageExtensions = {"jpg","jpeg","png","gif","JPG","JPEG","PNG","GIF"}; 
      Iterator<File> iterateImages = FileUtils.iterateFiles(directory, imageExtensions, true); 
      while (iterateImages.hasNext()) { 
       File theImage = iterateImages.next(); 
       if (!theImage.getName().startsWith(".", 0)) 
        images.add(theImage); 
      } 

      // custom process/methods... not very relevant here : 
      imageIndex = 0; 
      scale = 1.0f; 
      countImgs = images.size(); 
      loadImage(imageIndex); 
     } 
    } 
} 

在我的清單我有那些線,雖然我米不知道他們都是強制性的...

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
<uses-feature android:name="android.hardware.usb.host" /> 
<uses-permission android:name="android.permission.USB_PERMISSION" /> 
<uses-permission android:name="android.permission.WRITE_SETTINGS" /> 
+0

我可以看到有些人說他們的USB閃存驅動器可以通過usbdisk路徑訪問,而不是UsbDriveA:如果您想覆蓋所有情況,您可以同時測試:if with/storage/UsbDriveA /你的usbManager仍然是空的,然後嘗試使用/ storage/usbdisk/etc ...(也許還有一些其他的如果你能找到不同路徑的列表,儘管不應該有很多不同的路徑這裏) – JBA

3

我不能對此進行測試,不具有這樣的電纜自己,但我的假設是,你可以直接通過你的文件路徑到構造函數將如下所示:

File directory = new File("/storage/UsbDriveA/"); 

你試過這個?

+5

在我的手機上,路徑是'/ storage/usbdisk /' – satur9nine

相關問題