Notice
Recent Posts
Recent Comments
Link
투케이2K
468. (kotlin/코틀린) DownloadManager 다운로드 매니저 사용해 이미지 파일 다운로드 및 갤러리에 저장 실시 - DIRECTORY_PICTURES 본문
Kotlin
468. (kotlin/코틀린) DownloadManager 다운로드 매니저 사용해 이미지 파일 다운로드 및 갤러리에 저장 실시 - DIRECTORY_PICTURES
투케이2K 2024. 4. 2. 19:59[개발 환경 설정]
개발 툴 : AndroidStudio
개발 언어 : Kotlin
[소스 코드]
// ---------------------------------------------------------------
// [로직 처리 실시]
// ---------------------------------------------------------------
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 주소 선언]
val fileUrl = "http://img.test.com/big/test.jpg"
// [파일 저장 명칭 지정]
val currentTimeMillis = System.currentTimeMillis()
val simpleDateFormat = SimpleDateFormat("yyyyMMddkkmmss")
val fileName = simpleDateFormat.format(Date(currentTimeMillis)) + ".jpg"
// [다운로드 매니저 선언 및 파일 다운로드 수행]
val manager = getSystemService(DOWNLOAD_SERVICE) as DownloadManager
val uri = Uri.parse(fileUrl.trim { it <= ' ' }) // [파일 다운로드 주소 : 확장자명 포함되어야함]
val request = 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 (e: Exception) {
e.printStackTrace()
}
[결과 출력]
[1] : 앱 노티피케이션 표시 부분에 파일 다운로드 알림 확인
[2] : 갤러리 폴더에 저장 된 사진 확인
반응형
'Kotlin' 카테고리의 다른 글
Comments