Get access to USB mass storage device in android

前端 未结 2 1989
再見小時候
再見小時候 2020-12-08 10:34

So I have this little cable that you plug into your phone that has a USB port on the other side where you can plug in a flash drive for example, as you can see here:

相关标签:
2条回答
  • 2020-12-08 11:05

    In this example I am using the FileUtils from Apache, but event without it you will see the logic used to read a USB Flash drive:

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

    In my manifest I have those lines, although I'm not sure they're all mandatory...

    <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 讨论(0)
  • 2020-12-08 11:15

    I can't test this, not having such a cable myself, but my assumption would be that you can pass your filepath directly into the constructor which would look like:

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

    Have you tried this?

    0 讨论(0)
提交回复
热议问题