android 4.0设备附加usb存储驱动器只需列出文件/目录

时间:2014-01-23 11:35:49

标签: android

这个想法很简单:

使用音乐(mp3)文件附加USB pendrive,让android 4.0访问它。 例如,播放音乐。

首先:

  • 使用eclipse android文件资源管理器我看到mount / mnt / USB0 /包含所有文件
  • 使用x86仿真器ALT + F1 df命令我可以看到/ mnt / USB0
  • 使用x86模拟器ALT + F1 ls / mnt / USB0给我一个文件列表
  • 该应用拥有访问设备的正确权限

    <uses-permission android:name="android.permission.MEDIA_CONTENT_CONTROL"/>
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    
  • 当我附上pendrive时,应用程序会请求许可,我会给予它。

    if (intent.getBooleanExtra(UsbManager.EXTRA_PERMISSION_GRANTED, false)){
       Log.d("USB","permission OKE");
       if(device instanceof UsbDevice){
           test(mUsbManager,device);
       }
    }
    
    void test(UsbManager mUsbManager, UsbDevice device){
        UsbInterface intf = device.getInterface(0);
    UsbDeviceConnection connection = mUsbManager.openDevice(device); 
            if(connection.claimInterface(intf, true)){
    
        Log.d("open","YES OPENS WORKS");    
    
        // TRYING THINGS AT THIS PLACE
    
        try {
        //  String line;
        //  Process p = Runtime.getRuntime().exec("ls /mnt/USB0");
         // BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()) );         
        //  while((line = in.readLine()) != null){
        //      Log.d("read",line);
        //  }
        //  in.close();
        }
        catch (Exception e) {
            Log.d("command error:",e.getMessage());
        }
    
        connection.releaseInterface(intf);
    }else{
        Log.d("open","cannot claim interface");
    }
    
    connection.close(); 
    

    }

不符合上述事实的解决方案

  • 使用应用程序进程p = Runtime.getRuntime()。exec(“ls / mnt / USB0”);没有给我什么
  • 使用Mtp不起作用
  • 使用新文件(“/ mnt / USB0”)不给我任何东西

0 个答案:

没有答案