Android開發中如何獲取外置TF卡的路徑


Android獲取外部SDcard的官方調用是
Environment.getExternalStorageDirectory()

但是根據不同機型,是有不同的結果的。
如果手機支持TF卡擴展,並且本身沒有大容量存儲,比如說HTC老款手機 G3之類的,那么獲取到的是TF卡的路徑。這是對的。
如果手機本身有大容量存儲,不論手機是否支持TF卡擴展,比如現在HTC系列高端手機One X,或者920 butterfly系列,那么獲取到的是大容量存儲的路徑。

也就是說,如果手機本身具有大容量存儲,又支持TF卡擴展,通過這條命令是無法獲取到TF卡信息的。
我查了半天,沒有看到明確獲取到擴展存儲的API方法,如果有,請你告訴我,謝謝。(cst05001 at 狗妹兒)

那么怎么解決這個問題呢。網上有人說用/sdcard/extSdCard路徑之類,這是不對的。因為不同的ROM,對外部存儲的掛載點是會不一樣的。比如三星國行,掛載點是/Storage/extSdCard 。

這是我從系統角度想到的解決辦法,不用越獄,不用權限。大家可以參考:

		
 
 
 
         
   
   
   
           
  1. try {
  2. Runtime runtime = Runtime.getRuntime();
  3. Process proc = runtime.exec("mount");
  4. InputStream is = proc.getInputStream();
  5. InputStreamReader isr = new InputStreamReader(is);
  6. String line;
  7. String mount = new String();
  8. BufferedReader br = new BufferedReader(isr);
  9. while ((line = br.readLine()) != null) {
  10. if (line.contains("secure")) continue;
  11. if (line.contains("asec")) continue;
  12. if (line.contains("fat")) {
  13. String columns[] = line.split(" ");
  14. if (columns != null && columns.length > 1) {
  15. mount = mount.concat("*" + columns[1] + "\n");
  16. }
  17. } else if (line.contains("fuse")) {
  18. String columns[] = line.split(" ");
  19. if (columns != null && columns.length > 1) {
  20. mount = mount.concat(columns[1] + "\n");
  21. }
  22. }
  23. }
  24. txtView.setText(mount);
  25. } catch (FileNotFoundException e) {
  26. // TODO Auto-generated catch block
  27. e.printStackTrace();
  28. } catch (IOException e) {
  29. // TODO Auto-generated catch block
  30. e.printStackTrace();
  31. }

 






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM