FileOutputStream не сохраняет изображение во внешнее хранилище
Я пытаюсь сохранить Imgefile из снимка, сделанного с камеры с высоким разрешением. К сожалению, файл не создается. Я не знаю, где лежит ошибка.
public void saveImage(Bitmap imageFile) {
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
String imageName = "Image_" + timeStamp;
try {
String path = getExternalFilesDir(Environment.DIRECTORY_PICTURES).toString();
File saveImage = new File(path + File.separator + imageName + ".jpg");
FileOutputStream out = new FileOutputStream(saveImage);
imageFile.compress(Bitmap.CompressFormat.JPEG, 100, out);
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
В AndroidManifest.xml я установил разрешение на запись во внешнее хранилище.
<manifest>
[...]
<uses-feature
android:name="android.hardware.Camera"
android:required="false" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.Camera.autofocus" />
<application
[...]>
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="com.example.android.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_path" ></meta-data>
</provider>
[...]
</manifest>
1 ответ
Создайте новый файл перед записью в него (как FileOutputStream
требуется открыть существующий файл):
File saveImage = new File(path + File.separator + imageName + ".jpg");
saveImage.createNewFile(); /// <--- add this line
FileOutputStream out = new FileOutputStream(saveImage);