Запись на SD-карту в Android

public void initCache(Context context)
{
    this.context = context;
    //Find the dir to save cached images
    if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED))
        cacheDir=new File(android.os.Environment.getExternalStorageDirectory(),"myapp");
    else
        cacheDir=context.getCacheDir();
    if(!cacheDir.exists())
        cacheDir.mkdirs();
}

У меня есть права доступа в файле манифеста, а также у меня установлена ​​карта SD. Но, несмотря на это, мое приложение пишет во внутреннюю память. Я использую Motorola Atrix.

1 ответ

Environment.getExternalStorageState() возвращает путь к внутренней точке монтирования SD, например "/mnt/sdcard"

Нет, Environment.getExternalStorageDirectory() относится к тому, что производитель устройства считает "внешним хранилищем". На некоторых устройствах это съемный носитель, например SD-карта. На некоторых устройствах это часть флэш-памяти на устройстве. Здесь "внешнее хранилище" означает "содержимое, доступное через режим USB Mass Storage при подключении к хост-машине", по крайней мере для Android 1.x и 2.x.

Но вопрос по поводу внешней SD. Как получить путь типа "/mnt/sdcard/external_sd" (он может отличаться от устройства к устройству)?

Android не имеет понятия "внешняя SD", кроме внешнего хранилища, как описано выше.

Если производитель устройства выбрал встроенную флэш-память, а также имеет SD-карту, вам необходимо связаться с этим производителем, чтобы определить, можете ли вы использовать SD-карту (не гарантировано), и какие правила применяются для этого. используя его, например, какой путь использовать для него.

Другие вопросы по тегам