Запись на 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-карту (не гарантировано), и какие правила применяются для этого. используя его, например, какой путь использовать для него.