I have a list of records which I am getting from the API call, on the each item of that list I have a file name with other data. That file name is something like f354jklja.png or kioad87943kjkjd.pdf. I am using that list on the recyclerview, in the each recyclerview item I have a icon , what I want to do is on the click of that icon corresponding file will be download on the phone storage. How can I do that I am not getting any proper idea. Can anyone please help me to solve this?
override fun showPrecription(record: Record) { if (record.file!=null){ val context: Context = this // Check if the app has the WRITE_EXTERNAL_STORAGE permission if (ContextCompat.checkSelfPermission( context, Manifest.permission.WRITE_EXTERNAL_STORAGE ) != PackageManager.PERMISSION_GRANTED ) { // Request the permission ActivityCompat.requestPermissions( this, arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE), REQUEST_WRITE_EXTERNAL_STORAGE_PERMISSION ) fileNameToDownload=record.file } else{ downloadFile(Helper.RECORDS_URL,record.file) } }else Toast.makeText(this,"File path is not exist",Toast.LENGTH_LONG).show() // Get the base context } This is the function what will trigger on the click of the recyclerview item:
fun downloadFile(fileUrl: String, fileName: String) { val request = DownloadManager.Request(Uri.parse(fileUrl)) .setTitle(fileName) .setDescription("Downloading") .setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED) .setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, fileName) val downloadManager = getSystemService(Context.DOWNLOAD_SERVICE) as DownloadManager downloadManager.enqueue(request) } downloadFile function . Using this code the file is not downloading in my phone storage.