2016-07-01 10 views
0

Ich versuche, eine Datei-Browser-App zu machen. Ich möchte damit beginnen, so etwas zu zeigen.SD Card Path von Android Phone

enter image description here

Aber ich kann meine SD-Karte in den Weg nicht erreichen. Ich habe diese Methode

String path = Environment.getExternalStorageDirectory(); 

In der Dokumentation here Dort heißt es:

Hinweis: nicht durch das Wort „extern“ hier verwechselt werden. Dieses Verzeichnis kann besser als Medien/Shared Storage betrachtet werden. Es ist ein Dateisystem, das eine relativ große Datenmenge aufnehmen kann und das für alle Anwendungen freigegeben ist (erzwingt keine Berechtigungen). Traditionell ist dies eine SD-Karte, sie kann jedoch auch als integrierter Speicher in einem Gerät implementiert werden, das sich vom geschützten internen Speicher unterscheidet und als Dateisystem auf einem Computer bereitgestellt werden kann.

Das Problem ist, ich kann auf dem Gerät Speicher erreichen, aber ich kann nicht auf den Pfad meiner SD-Karte erreichen. Weiß jemand, wie man diesen Weg bekommt?

+1

Sie haben keinen willkürlichen Dateisystemzugriff auf [Wechselspeicher] (https://commonsware.com/blog/2014/04/09/storage-situation-removable-storage.html). – CommonsWare

+0

Sie können alle Arten von Verzeichnissen mit Environment.getExternalStoragePublicDirectory (Environment.DIRECTORY_ALARMS) lesen; –

Antwort

3

\t // Access the built-in SD card 
 
\t private String getInnerSDCardPath() { 
 
\t \t return Environment.getExternalStorageDirectory().getPath(); 
 
\t } 
 

 
\t // Access to external SD card 
 
\t private List<String> getExtSDCardPath() { 
 
\t \t List<String> pathList = new ArrayList<String>(); 
 
\t \t try { 
 
\t \t \t Runtime runtime = Runtime.getRuntime(); 
 
\t \t \t Process proc = runtime.exec("mount"); 
 
\t \t \t BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(proc.getInputStream())); 
 
\t \t \t String line; 
 
\t \t \t while ((line = bufferedReader.readLine()) != null) { 
 
\t \t \t \t if (line.contains("extSdCard")) { 
 
\t \t \t \t \t String[] arr = line.split(" "); 
 
\t \t \t \t \t String path = arr[1]; 
 
\t \t \t \t \t File file = new File(path); 
 
\t \t \t \t \t if (file.isDirectory()) { 
 
\t \t \t \t \t \t pathList.add(path); 
 
\t \t \t \t \t } 
 
\t \t \t \t } 
 
\t \t \t } 
 
\t \t \t bufferedReader.close(); 
 
\t \t } catch (Exception e) { 
 
\t \t \t e.printStackTrace(); 
 
\t \t } 
 
\t \t return pathList; 
 
\t }

Ich hoffe, dass es Ihnen helfen kann.

+0

Vielen Dank. Für mich geht das. Du bist sehr schnell. – gunescelil

+0

Ich erkannte, dass es in Emulator nicht funktioniert. Aber in einem echten Telefon funktioniert es. – gunescelil