공용공간 및 사설공간에 각각 저장하는 함수
//
// 파일 저장 하는 함수
//
private Uri saveImage(Bitmap bitmap, @NonNull String name, @NonNull String folder, boolean inAppFolder) throws IOException {
boolean saved;
OutputStream fos;
Uri imageUri;
// inAppFolder 는 /Android/data/앱패키지명/files 폴더에 위치
// 파일 명이 같을 경우 덮어쓰기로 됨
if(inAppFolder) {
File image = new File(getActivity().getExternalFilesDir(null), name);
fos = new FileOutputStream(image);
imageUri = Uri.fromFile(image);
} else {
// 공용공간에 저장, DCIM의 folder에
// 파일명이 같을 경우 (1) (2)로 넘버링 됨
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
ContentResolver resolver = getContext().getContentResolver();
ContentValues contentValues = new ContentValues();
contentValues.put(MediaStore.MediaColumns.DISPLAY_NAME, name);
contentValues.put(MediaStore.MediaColumns.MIME_TYPE, "image/jpg");
contentValues.put(MediaStore.MediaColumns.RELATIVE_PATH, "DCIM/" + folder);
imageUri = resolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues);
fos = resolver.openOutputStream(imageUri);
} else {
String imagesDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).toString() + File.separator + folder;
File file = new File(imagesDir);
if (!file.exists()) {
file.mkdir();
}
File image = new File(imagesDir, name + ".jpg");
fos = new FileOutputStream(image);
imageUri = Uri.fromFile(image);
}
}
saved = bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
if(saved) {
fos.flush();
fos.close();
return imageUri;
}
return null;
}
'Android' 카테고리의 다른 글
android sms mms read - gallaxy s9 에서 작동함 (0) | 2022.05.26 |
---|---|
안드로이드 스크립트로 build 하여 git push 하기 (0) | 2021.12.26 |
안드로이드 웹뷰앱 앱에 WebView 및 제휴사 스팸 정책을 준수하지 않는 콘텐츠가 포함되어 있습니다. (0) | 2020.10.12 |
Android 전화번호 가져오려면 권한이 필요합니다. (0) | 2020.07.17 |
무통장 입금 자동 확인 SMS 안드로이드 앱 android & Firebase (0) | 2019.07.13 |
댓글