2016-07-01 4 views
0

Я пытаюсь создать приложение для браузера файлов. Поэтому я хочу начать с отображения чего-то подобного.Sd Card Path для Android Phone

enter image description here

Но я не могу достигнуть моего пути SD карты. Я использовал этот метод

String path = Environment.getExternalStorageDirectory(); 

В документации here Он говорит:

Примечание: не следует путать слово «внешний» здесь. Этот каталог лучше воспринимать как медиа/общую память. Это файловая система, которая может хранить относительно большой объем данных и совместно используется во всех приложениях (не обеспечивает разрешения). Традиционно это SD-карта, но она также может быть реализована как встроенное хранилище в устройстве, которое отличается от защищенного внутреннего хранилища и может быть смонтировано как файловая система на компьютере.

Проблема в том, что я могу добраться до устройства, но не могу добраться до пути к SD-карте. Кто-нибудь знает, как получить этот путь?

+1

У вас нет произвольного доступа файловой системы к [сменному хранилищу] (https://commonsware.com/blog/2014/04/09/storage-situation-removable-storage.html). – CommonsWare

+0

вы можете прочитать все типы каталогов, используя Environment.getExternalStoragePublicDirectory (Environment.DIRECTORY_ALARMS); –

ответ

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 }

Я надеюсь, что это может помочь вам.

+0

Большое спасибо. Меня устраивает. Ты очень быстрый. – gunescelil

+0

Я понял, что в эмуляторе это не работает. Но в реальном телефоне это работает. – gunescelil