투케이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] : 갤러리 폴더에 저장 된 사진 확인

 

반응형
Comments