Notice
Recent Posts
Recent Comments
Link
투케이2K
758. (Android/Java) DownloadManager 다운로드 매니저 사용해 이미지 파일 다운로드 및 갤러리에 저장 실시 - DIRECTORY_PICTURES 본문
Android
758. (Android/Java) DownloadManager 다운로드 매니저 사용해 이미지 파일 다운로드 및 갤러리에 저장 실시 - DIRECTORY_PICTURES
투케이2K 2024. 4. 2. 19:56[개발 환경 설정]
개발 툴 : AndroidStudio
[소스 코드]
// ---------------------------------------------------------------
// [로직 처리 실시]
// ---------------------------------------------------------------
try {
/**
* // -----------------------------------------
* [요약 설명]
* // -----------------------------------------
* 1. 사전 사용자로부터 권한 획득 필요
*
* >> 안드로이드 13 이상
* AndroidManifest : READ_MEDIA_IMAGES , READ_MEDIA_VIDEO , READ_MEDIA_AUDIO
*
* >> 안드로이드 10 이상
* AndroidManifest : READ_EXTERNAL_STORAGE
*
* >> 안드로이드 10 미만
* AndroidManifest : WRITE_EXTERNAL_STORAGE , READ_EXTERNAL_STORAGE
*
* // -----------------------------------------
* 2. 참고 내용 :
*
* 안드로이드 10 (Q) 이상은 WRITE_EXTERNAL_STORAGE 권한이 없어도
* 공용 공간인 갤러리에 사진을 내보낼 수 있습니다 (다운로드, 사진 디렉토리 쓰기 가능)
*
* >> 안드로이드 10 미만은 해당 권한 필요
* // -----------------------------------------
* 3. 참고 내용 :
*
* DownloadManager 를 사용해 파일을 저장하기 위해서는 공용 접근이 가능한 외부 저장소 경로 여야합니다
* // -----------------------------------------
* */
// [파일 다운로드 URL 주소 선언]
String fileUrl = "http://img.test.com/big/test.jpg";
// [파일 저장 명칭 지정]
long currentTimeMillis = System.currentTimeMillis();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddkkmmss");
String fileName = simpleDateFormat.format(new Date(currentTimeMillis)) + ".jpg";
// [다운로드 매니저 선언 및 파일 다운로드 수행]
DownloadManager manager = (DownloadManager) getSystemService(Activity.DOWNLOAD_SERVICE);
Uri uri = Uri.parse(fileUrl.trim()); // [파일 다운로드 주소 : 확장자명 포함되어야함]
DownloadManager.Request request = new DownloadManager.Request(uri); // [다운로드 매니저 객체 생성]
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); // [앱 상단에 다운로드 표시]
request.setTitle(fileName); // [다운로드 제목 표시]
request.setDescription("Download ... "); // [다운로드 중 표시되는 내용]
request.setNotificationVisibility(1); // [앱 상단에 다운로드 상태 표시]
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_PICTURES, fileName); // [다운로드 폴더 지정 : 갤러리]
request.setAllowedOverMetered(true); // [네트워크가 연결 된 경우에도 다운로드]
manager.enqueue(request); // [다운로드 수행]
}
catch (Exception e){
e.printStackTrace();
}
[결과 출력]
[1] : 앱 노티피케이션 표시 부분에 파일 다운로드 알림 확인
[2] : 갤러리 폴더에 저장 된 사진 확인
반응형
'Android' 카테고리의 다른 글
Comments