Я написал код для сохранения изображений на 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?
К сожалению, я забыл добавить исключение. Я получаю файл не найден Исключение для файла, который я использую для инициализации FileOutputStream. Отсутствие разрешения дало бы мне другое исключение, я думаю. – Janusz
Ладно, это не так. Спасибо, что это работает сейчас :) Исключение полностью привело меня к неправильному пути. – Janusz