2013-04-28 66 views
3

我正在從android讀取USB數據的應用程序。 USB可以通過串口連接到android,我的應用程序可以找到它。如何找到安裝到android的USB路徑?

現在,我想從USB讀取數據文件和文件夾。我讀過很多文章。我發現他們使用此代碼:

Environment.getExternalStorageDirectory(); 

但是在我的情況,我得到的路徑是/存儲/模擬/ 0。 當我試着去閱讀所有這些都包含在路徑中的文件,我得到了下面的語句:

/storage/emulated/0/Android 
/storage/emulated/0/Music 
/storage/emulated/0/Podcasts 
/storage/emulated/0/Ringtones 

,但我的USB的路徑沒有找到。所以,我不確定它是從USB讀取文件的正確方法嗎?

這裏是我的代碼:

File f = Environment.getExternalStorageDirectory(); 
File[] files = f.listFiles(); 
String fol = ""; 
for (File inFile : files) { 
    if (inFile.isDirectory()) { 
     fol += inFile.toString()+"\n"; 
    } 
} 
TextView tv = (TextView) findViewById(R.id.demoTitle); 
tv.setText(fol); 

回答

1

通過使用此代碼

public String getStoragepath() { 
    try { 
     Runtime runtime = Runtime.getRuntime(); 
     Process proc = runtime.exec("mount"); 
     InputStream is = proc.getInputStream(); 
     InputStreamReader isr = new InputStreamReader(is); 
     String line; 
     String[] patharray = new String[10]; 
     int i = 0; 
     int available = 0; 

     BufferedReader br = new BufferedReader(isr); 
     while ((line = br.readLine()) != null) { 
      String mount = new String(); 
      if (line.contains("secure")) 
       continue; 
      if (line.contains("asec")) 
       continue; 

      if (line.contains("fat")) {// TF card 
       String columns[] = line.split(" "); 
       if (columns != null && columns.length > 1) { 
        mount = mount.concat(columns[1] + "/requiredfiles"); 

        patharray[i] = mount; 
        i++; 

        // check directory is exist or not 
        File dir = new File(mount); 
        if (dir.exists() && dir.isDirectory()) { 
         // do something here 

         available = 1; 
         finalpath = mount; 
         break; 
        } else { 

        } 
       } 
      } 
     } 
     if (available == 1) { 

     } else if (available == 0) { 
      finalpath = patharray[0]; 
     } 

    } catch (Exception e) { 

    } 
    return finalpath; 
} 
+0

感謝您的代碼獲得所有已安裝的設備,我用它作爲後備,我首先檢查文件是否「 proc/mounts「是存在的,我讀過它,如果沒有,那麼我通過這個腳本讀取它。 – Diljeet 2017-02-18 22:09:23

+0

我們不應該依賴「fat」或「vfat」,新設備有時會將「fuse」作爲分區類型,它的大腳本檢測分區,但是它們以「/ dev /」開頭,可能是vfat或fuse,並且可能有重複路徑到相同的分區,o要小心。 – Diljeet 2017-02-18 22:18:53

相關問題