[android] WebView를 이용하여 파일 다운로드 구현하기

깨미·2021년 6월 25일
1

📱 Android 📱

목록 보기
13/16
post-thumbnail

webview를 통해서 이것저것 개발을 진행하고 있는데 이번에는 파일을 다운로드 받는 것을 구현해보려고 한다 ❗
방법은 webview에 있는 DownloadListener 를 사용하는 것이다. 앱 개발은 이런게 참 좋구나 😊 (그래서 더 바보가 돼가고 있는 건지도..)
너무 간단해서 설명할 것도 없다..

webView.setDownloadListener(DownloadListener { url, userAgent, contentDisposition, mimetype, contentLength ->
    val request = DownloadManager.Request(Uri.parse(url))
    val filename = URLUtil.guessFileName(url, contentDisposition, mimetype)
    val cookies = CookieManager.getInstance().getCookie(url)
    request.addRequestHeader("cookie", cookies)
    request.addRequestHeader("User-Agent", userAgent)
    request.setDescription("Downloading file..")
    request.setTitle(filename)
    request.allowScanningByMediaScanner()
    request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED)
    request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, filename) 
    val dManager = mContext.getSystemService(DOWNLOAD_SERVICE) as DownloadManager
    dManager.enqueue(request)
})

추가로 파일 다운로드를 하기 위해서는 외부 저장소 쓰기 권한을 주어야 하고, 해당 앱에서 무조건 파일을 다운로드 받고 싶다면 파일 다운로드 링크를 눌렀을 때 다른 연결 프로그램으로 이동 하는 거를 막아야 한다.

작성한 글이 있으니 참고하기
WRITE_EXTERNAL_STORAGE 권한 허용

WebViewClient의 shouldOverrideUrlLoading에서 loadUrl(request?.url.toString()) 주기

profile
vis ta vie

0개의 댓글