2017-02-28 60 views
0

我正在開發Ecilpse ADT(用於外部問題),並且我有一個Android設備。這是一款採用Android 4.0.4(冰淇淋三明治)的EPD(電子紙),並且該設備有一個microSD卡,但無法通過程序訪問。我需要閱讀它裏面的一些圖像。如何訪問Android 4.0.4上的microSD卡(冰淇淋三明治)

作爲測試我已用下面的代碼和其它變化嘗試過了,我都沒有成功:

File sdcard = Environment.getExternalStorageDirectory(); 

    File file = new File(sdcard,"prueba_sd.txt"); 

    StringBuilder text = new StringBuilder(); 

    try { 
     BufferedReader br = new BufferedReader(new FileReader(file)); 
     String line; 

     while ((line = br.readLine()) != null) { 
      text.append(line); 
      text.append('\n'); 
     } 
     br.close(); 

     Log.i("Ficheros", "It works!"); 

    } 
    catch (Exception ex) { 
     Log.e("Ficheros", "Doesnt work"); 
    } 

附加這是DDMS透視的結構:

Enter image description here

+0

您的代碼應該能夠讀取該文件。不要告訴它不。但它不會在SD卡上。您應該添加代碼來檢查文件是否存在。使用'file.exists()'。爲什麼不嘗試創建/寫入文件? file.getAbsolurthePath()的值是多少? – greenapps

回答

0

Environment.getExternalStorageDirectory()用於外部存儲,不可移動存儲。在Android 4.0.4中,沒有用於處理可移動存儲的API。您必須將完全限定的路徑硬編碼到可移動存儲。對於您只需在自己的設備上使用的應用,對該路徑進行硬編碼應該是安全的。

+0

Thx爲您的答案。你有這樣的建議嗎? String fileName =「/mnt/extsd/file.txt」; – user2091725

+0

@ user2091725:假設您的屏幕截圖反映了設備上的實際文件系統,那麼是的。請注意,您可能沒有讀取該位置的權限。在Android 4.4之前,設備製造商希望使用可移動存儲,但並非所有制造商都允許應用開發人員訪問它。 – CommonsWare

0

沒有獲得微型SD路徑的API。嘗試使用this answer並從系統文件(/etc/vold.fstab)中讀取可移動存儲的路徑。

+0

Thx爲您的答案。我已經回顧了答案,但這是什麼意思? - > fis = new FileInputStream(new File(「/ etc/vold.fstab」));特別是「/etc/vold.fstab」 – user2091725

+0

vold.fstab是您可以在其中找到可移動存儲路徑的文件。該答案只是讀取該文件。 – Massimo

相關問題