Когда мое приложение запускается первым, оно позволяет пользователю выбрать изображение профиля. Это можно сделать, сделав фотографию на данный момент, или выбрав ее в галерее.Сохранить растровое изображение в папке приложения
После того, как пользователь получит снимок, его необходимо сохранить во внутренней памяти устройства и использовать в приложении как изображение профиля пользователя.
Этот процесс работает нормально, пользователь получает изображение, и это отображается в представлении изображения до его сохранения. Но чтобы сохранить изображение во внутреннем хранилище, у меня проблемы. Я попробовал несколько способов сделать это, и большинство из них, похоже, работают. Но когда я их пытаюсь, изображение не сохраняется или, по крайней мере, я не нахожу папку, в которой она сохраняется.
Я попытался в этих 3 способами:
Первое:
File directory = getDir("profile", Context.MODE_PRIVATE);
File mypath = new File(directory, "thumbnail.png");
FileOutputStream fos = null;
try {
fos = new FileOutputStream(mypath);
mybitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
Второе:
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
mybitmap.compress(Bitmap.CompressFormat.PNG, 90, bytes);
FileOutputStream fos = null;
try {
fos = openFileOutput("thumbnail.png", Context.MODE_PRIVATE);
fos.write(bytes.toByteArray());
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Третье:
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
mybitmap.compress(Bitmap.CompressFormat.PNG, 90, bytes);
File fileWithinMyDir = new File(getFilesDir(), "thumbnail.png");
try {
FileOutputStream fos = new FileOutputStream(fileWithinMyDir);
fos.write(bytes.toByteArray());
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Suposedly, изображение будет сохранено в путь: android/data/AppName/app_data/
, но там нет папки. Во всяком случае, я смотрел в других папках, но ничего.
Edit-
В первом методе, я видел, что бросает исключение:
E/SAVE_IMAGE﹕ /data/data/com.example.myapp/app_profile/thumbnail.png: open failed: EISDIR (Is a directory)
java.io.FileNotFoundException: /data/data/com.example.myapp/app_profile/thumbnail.png: open failed: EISDIR (Is a directory)
Caused by: libcore.io.ErrnoException: open failed: EISDIR (Is a directory)
У вас есть разрешение на использование внешнего хранилища? –
@quicklearner Мне не нужно писать на внешнем хранилище – masmic