Как найти внутренний путь SD-карты?

Я новичок в Android. Как найти путь внутренней SD-карты, а затем, как найти их используемые и свободные места. Пожалуйста, ответьте ваши комментарии и ответы ценны для меня.

 Austin17 июн. 2012 г., 11:05
Вы можете проверить,developer.android.com/guide/topics/data/data-storage.html может иметь некоторую полезную информацию для вас.

Ответы на вопрос(5)

How to find Internal SD Card Path and External SD Card Path

Вы не т.

В настоящее время, с точки зрения Android SDK, «Внутренний путь к SD-карте» отсутствует. или «Путь к внешней SD-карте». Существует путь к внешнему хранилищу, который возвращается различнымиEnvironment (например.,getExternalStorageDirectory()). Это будет хранилище, назначенное производителем устройства для этой цели.

Не существует надежного способа определения любого другого потенциального «пути карты SD». на устройстве Android.

 Jahir19 июн. 2012 г., 07:53
Спасибо за информацию. Это полезно для меня.

Используйте приведенный ниже код, он вернет вам список внутренних каталогов и пути SDCard для тех устройств, которые имеют как внутреннее, так и внешнее хранилище.

File dir = new File(Environment.getExternalStorageDirectory().getParent());
            File[] f = dir.listFiles();
            for(File file:f)
        {
            if(file.getName().equals("sdacard0"))//check name of sdcard from  file manager.
            {
                if(file.isDirectory())
                {
                    f = file.listFiles();
                }
            }
        }

Всегда естьSystem.getenv(ENV_EXTERNAL_STORAGE)  отandroid.os:

Другие примеры из исходного кода:

public static File getExternalStorageDirectory() {
    throwIfUserRequired();
    return sCurrentUser.getExternalDirs()[0];
}

/** {@hide} */
public static File getLegacyExternalStorageDirectory() {
    return new File(System.getenv(ENV_EXTERNAL_STORAGE));
}

/** {@hide} */
public static File getLegacyExternalStorageObbDirectory() {
    return buildPath(getLegacyExternalStorageDirectory(), DIR_ANDROID, DIR_OBB);
}

Environment.java

private static final String ENV_EXTERNAL_STORAGE = "EXTERNAL_STORAGE";
private static final String ENV_ANDROID_ROOT = "ANDROID_ROOT";
private static final String ENV_ANDROID_DATA = "ANDROID_DATA";
private static final String ENV_ANDROID_EXPAND = "ANDROID_EXPAND";
private static final String ENV_ANDROID_STORAGE = "ANDROID_STORAGE";
private static final String ENV_DOWNLOAD_CACHE = "DOWNLOAD_CACHE";
private static final String ENV_OEM_ROOT = "OEM_ROOT";
private static final String ENV_ODM_ROOT = "ODM_ROOT";
private static final String ENV_VENDOR_ROOT = "VENDOR_ROOT";

/** {@hide} */
public static final String DIR_ANDROID = "Android";
private static final String DIR_DATA = "data";
private static final String DIR_MEDIA = "media";
private static final String DIR_OBB = "obb";
private static final String DIR_FILES = "files";
private static final String DIR_CACHE = "cache";

/** {@hide} */
@Deprecated
public static final String DIRECTORY_ANDROID = DIR_ANDROID;

private static final File DIR_ANDROID_ROOT = getDirectory(ENV_ANDROID_ROOT, "/system");
private static final File DIR_ANDROID_DATA = getDirectory(ENV_ANDROID_DATA, "/data");
private static final File DIR_ANDROID_EXPAND = getDirectory(ENV_ANDROID_EXPAND, "/mnt/expand");
private static final File DIR_ANDROID_STORAGE = getDirectory(ENV_ANDROID_STORAGE, "/storage");
private static final File DIR_DOWNLOAD_CACHE = getDirectory(ENV_DOWNLOAD_CACHE, "/cache");
private static final File DIR_OEM_ROOT = getDirectory(ENV_OEM_ROOT, "/oem");
private static final File DIR_ODM_ROOT = getDirectory(ENV_ODM_ROOT, "/odm");
private static final File DIR_VENDOR_ROOT = getDirectory(ENV_VENDOR_ROOT, "/vendor");

Source

Источники \ андроид-25 \ Android \ OS \ Environment.java

Решение Вопроса

Environment.getExternalStorageDirectory().getAbsolutePath() дать вам путь SD-карты.

Чтобы получить внешнюю SD-карту, доступную и бесплатную Использование пространства следующим фрагментом.

StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath());
double sdAvailSize = (double)stat.getAvailableBlocks()
                   * (double)stat.getBlockSize();
//One binary gigabyte equals 1,073,741,824 bytes.
double gigaAvailable = sdAvailSize / 1073741824;
 Jahir17 июн. 2012 г., 11:11
Этот код используется для поиска внутреннего пути SD-карты, в противном случае внешний путь SD-карты?
 Jahir19 июн. 2012 г., 07:53
Спасибо за информацию. Работает нормально.
 Jahir17 июн. 2012 г., 11:27
Например, мой мобильный Android содержит внутреннюю память телефона, внутреннюю SD-карту (в сборке) и внешнюю SD-карту. Как найти внутренний путь к SD-карте и внешний путь к SD-карте. Благодарю.
 Jahir17 июн. 2012 г., 11:15
Благодарю. Мне также нужно найти путь внутренней SD-карты.
 17 июн. 2012 г., 11:23
Что вы подразумеваете под внутренней SD-картой? Вы имеете в виду внутреннее хранилище?

Проверьте документацию по Android при доступе к SD-карте:http://developer.android.com/guide/topics/data/data-storage.html#filesExternal

Ваш ответ на вопрос