2010-09-27 4 views
2

Я написал код для сохранения изображений на SD-карте некоторое время назад. Теперь я добавил targetSDKVersion в свой манифест, и теперь мой код сохранения файла перестает работать.Какие изменения внесены в API хранения данных между Android 1.5 и Android 1.6

Я могу воспроизвести его, удалив targetSdkVersion из моего манифеста из того, что в моем приложении ничего не будет записывать на SD-карту.

Есть ли изменение API между Android 1.5 и 1.6, что мешает мне писать на SD-карту?

File imageDirectory = new File(Environment.getExternalStorageDirectory() 
       .getAbsolutePath() 
       + File.separator 
       + FOLDER_NAME); 

Log.d(ImageSaver.class.getSimpleName(), "SD Card status: " 
      + Environment.getExternalStorageState()); 

if (!imageDirectory.exists()) { 
    boolean created = imageDirectory.mkdir(); 
    Log.d(ImageSaver.class.getSimpleName(), "Created image directory " 
       + imageDirectory + " " + created); 
} 
File imageFile = new File(imageDirectory.getAbsolutePath() + File.separator 
        + name + nameSuffix + FILE_ENDING); 

bitmap.compress(Bitmap.CompressFormat.PNG, FULL_QUALITY, 
     new FileOutputStream(imageFile)); 

Это тестовый код для сжатия растрового изображения на SD-карту. При следующем манифеста записи она не работает:

<uses-sdk 
    android:minSdkVersion="3" 
    android:targetSdkVersion="8" /> 

я получаю следующее исключение:

09-27 11: 35: 58,689: ERROR/ImageSaver (8672): Файл не найден 09-27 11: 35: 58,689: ОШИБКА/ImageSaver (8672): java.io.FileNotFoundException: /sdcard/FOLDER/1285580158662.png

Удаление ТА rgetSdkVersion снова работает на всех платформах.

Как я могу сделать код запущенным с помощью набора targetSdkVersion?

ответ

1

Вы должны добавить разрешение WRITE_EXTERNAL_STORAGE в манифесте - это новый уровень, так как API 4.

+0

К сожалению, я забыл добавить исключение. Я получаю файл не найден Исключение для файла, который я использую для инициализации FileOutputStream. Отсутствие разрешения дало бы мне другое исключение, я думаю. – Janusz

+0

Ладно, это не так. Спасибо, что это работает сейчас :) Исключение полностью привело меня к неправильному пути. – Janusz

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

  • Нет связанных вопросов^_^