У меня есть (веб-просмотр) приложение kotlin
и страницы моего приложения (Google Drive), которые пользователи могут скачивать с него,
Я хочу, чтобы при загрузке пользователем файла с диска Google файл загружался на его имя
и скачать в фолдери, если он существует
Пример: файл требуется загрузить на Google диск: Google диск site \ mp3sound \ sound1.mp3
Если пользователь щелкнет ссылку (sound1) Google drive, файл загрузится в память устройства \ Downloads \ mp3sound \ sound1.mp3
Мое приложение (MainActivity)
webview.setDownloadListener { url, userAgent, contentDisposition, mimetype, contentLength ->
//checking Runtime permissions
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
{
if (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
//Do this, if permission granted
downloadDialog(url, userAgent, contentDisposition, mimetype)
} else {
//Do this, if there is no permission
ActivityCompat.requestPermissions(
this,
arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE),
1
)
}
} else {
//Code for devices below API 23 or Marshmallow
downloadDialog(url, userAgent, contentDisposition, mimetype)
}
}
private fun downloadDialog(url:String, userAgent:String, contentDisposition:String, mimetype:String)
{
//getting file name from ur
val filename = URLUtil.guessFileName(url, contentDisposition, mimetype)
//Alertdialog
val builder = AlertDialog.Builder(this@MainActivity)
//title for AlertDialog
builder.setTitle("تأكيد تحميل الملف")
//message of AlertDialog
builder.setMessage("سيتم تحميل الملف باسم\n $filename")
//if YES button clicks
builder.setPositiveButton("تحميل") { dialog, which ->
//DownloadManager.Request created with url.
val request = DownloadManager.Request(Uri.parse(url))
//cookie
val cookie = CookieManager.getInstance().getCookie(url)
//Add cookie and User-Agent to request
request.addRequestHeader("Cookie",cookie)
request.addRequestHeader("User-Agent",userAgent)
//Download is visible and its progress, after completion too.
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED)
//DownloadManager created
val downloadmanager = getSystemService(Context.DOWNLOAD_SERVICE) as DownloadManager
//Saving file in Download folder
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS,"معهد الدين القيم/$filename")
//download enqued
downloadmanager.enqueue(request)
}
//If Cancel button clicks
builder.setNegativeButton("إلغاء")
{dialog, which ->
//cancel the dialog if Cancel clicks
dialog.cancel()
}
val dialog:AlertDialog = builder.create()
//shows alertdialog
dialog.show()
}