загрузить файл из веб-просмотра во внутреннее хранилище - PullRequest
0 голосов
/ 29 октября 2018

Следующий код прекрасно работает для загрузки mp3-файлов во внешнее хранилище, но не работает для загрузки файлов во внутреннее хранилище. У многих смартфонов нет внешнего хранилища. Что я могу сделать? Я не знаю, как реализовать асинхронную задачу в kotlin, если это необходимо.

 mywebView.setDownloadListener(object : DownloadListener {
        override fun onDownloadStart(url: String, userAgent: String,
                                     contentDisposition: String, mimetype: String,
                                     contentLength: Long) {


            val request = DownloadManager.Request(Uri.parse(url))
            request.allowScanningByMediaScanner()
            request.setDescription("Download file...")
            request.setTitle(URLUtil.guessFileName(url, contentDisposition, mimetype))

            request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI or DownloadManager.Request.NETWORK_MOBILE)
            request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED) //Notify client once download is completed!
            request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, mimetype )
            val webview = getSystemService(DOWNLOAD_SERVICE) as DownloadManager
            webview.enqueue(request)

            Toast.makeText(getApplicationContext(), "Download avviato", Toast.LENGTH_LONG).show()

        }
    })

1 Ответ

0 голосов
/ 29 октября 2018

Невозможно проверить код в данный момент, но он должен выглядеть примерно так:

 mywebView.setDownloadListener(object : DownloadListener {
        override fun onDownloadStart(url: String, userAgent: String,
                                     contentDisposition: String, mimetype: String,
                                     contentLength: Long) {


            val request = DownloadManager.Request(Uri.parse(url))
            request.allowScanningByMediaScanner()
            request.setDescription("Download file...")
            request.setTitle(URLUtil.guessFileName(url, contentDisposition, mimetype))

            request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI or DownloadManager.Request.NETWORK_MOBILE)
            request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED) //Notify client once download is completed!
            request.setDestinationInExternalPublicDir(Environment.getExternalStorageDirectory(), mimetype )
            val webview = getSystemService(DOWNLOAD_SERVICE) as DownloadManager
            webview.enqueue(request)

            Toast.makeText(getApplicationContext(), "Download avviato", Toast.LENGTH_LONG).show()

        }
    })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...