2013-05-29 1 views
0

У меня есть телефон (B15 CAT) с слотом для SD-карт. Когда я вставить SDCard в этом телефоне и прошу внешний каталог хранения с:Как управлять внешним хранилищем независимо от телефона

Environment.getExternalStorageDirectory() 

всегда возвращает пространство на sdcard0, которая является внутренней памятью. Эта память слишком мала для моей потребности. Перечисляя/mnt, я нашел точку монтирования с именем/sdcard2, которая является «настоящим» scard. К сожалению sdcard2 не кажется, стандарт и некоторые другие марки будет использовать другое имя ...

Зная, что getExternalStorageDirectory(), кажется, работает, как ожидалось по телефону, без слота SDCard, как Nexus 4, как следует я обращаюсь с внешним хранилищем, чтобы писать на SD-карте (имеется большое пространство), а не во внутренней памяти?

Я пытался что-то вроде этого:

File mnt = new File("/mnt"); 
File[] liste = mnt.listFiles(); 
boolean hassd2 = false; 

for(File mount : liste) { 
    if(folder.getName().equals("sdcard2") { 
     hassd2 = true; 
     break; 
    } 
} 

String path = ""; 
if(hassd2) { 
    path = "/sdcard2/my/folder/" 
} else { 
    File p = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/my/folder/"); 
    path = p.toString(); 
} 

Это работает, но только с этим конкретным телефоном и другим одним, без слота SDCard ...

ответ

0

Я также имел проблемы со сборкой в функции Android в случае установки нескольких «внешних» хранилищ. Я проанализировал установленные каталоги непосредственно из файла f_stab.

Этот link должен предоставить вам необходимый вам код.

После установки точек монтирования вы можете попытаться вычислить доступное пространство, чтобы решить, достаточно ли для вашей работы.

Смежные вопросы