public static File getExternalStorageDirectory()
Dodane w poziomie API 1
Pobiera Android zewnętrznego katalogu pamięci. Katalog ten może nie być obecnie dostępny, jeśli został zamontowany przez użytkownika na komputerze, usunięty z urządzenia lub wystąpił inny problem. Możesz określić jego bieżący stan za pomocą getExternalStorageState().
Uwaga: nie należy mylić słowa "zewnętrzne" tutaj. Ten katalog może być lepiej pomyślany jako magazyn multimediów/współużytkowany. Jest to system plików, który może pomieścić stosunkowo dużą ilość danych i jest udostępniany we wszystkich aplikacjach (nie wymusza uprawnień). Tradycyjnie jest to karta SD, ale może być również zaimplementowana jako wbudowana pamięć w urządzeniu, które różni się od chronionej pamięci wewnętrznej i może zostać zamontowane jako system plików na komputerze.
Edit:
myślę różni się od urządzenia do urządzenia.
Mam Samsung Galaxy S3 Environment.getExternalStorageDirectory()
zwraca sdCard0
który jest ścieżką pamięci wewnętrznej pamięci.
Więcej info @
http://developer.android.com/reference/android/os/Environment.html#getExternalStorageDirectory()
Nie polecam poniżej. Miałem dyskusję na ten temat z commonsware i rada nie polegała na skorzystaniu z poniższego. Ale możesz użyć poniższych do celów testowych.
String externalpath = new String();
String internalpath = new String();
public void getExternalMounts() {
Runtime runtime = Runtime.getRuntime();
try
{
Process proc = runtime.exec("mount");
InputStream is = proc.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
String line;
BufferedReader br = new BufferedReader(isr);
while ((line = br.readLine()) != null) {
if (line.contains("secure")) continue;
if (line.contains("asec")) continue;
if (line.contains("fat")) {//external card
String columns[] = line.split(" ");
if (columns != null && columns.length > 1) {
externalpath = externalpath.concat("*" + columns[1] + "\n");
}
}
else if (line.contains("fuse")) {//internal storage
String columns[] = line.split(" ");
if (columns != null && columns.length > 1) {
internalpath = internalpath.concat(columns[1] + "\n");
}
}
}
}
catch(Exception e)
{
e.printStackTrace();
}
System.out.println("Path of sd card external............"+externalpath);
System.out.println("Path of internal memory............"+internalpath);
}
Próbowałem tego na moim telefonie. Zwraca to położenie pamięci wewnętrznej, która jest oddzielona dla przechowywania danych. –