Getting error :
java.lang.SecurityException: Permission Denial: writing com.android.providers.downloads.DownloadProvider uri content://downloads/my_downloads from pid=3608, uid=10081 requires android.permission.INTERNET, or grantUriPermission()
at android.os.Parcel.readException(Parcel.java:1683)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:183)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:135)
at android.content.ContentProviderProxy.insert(ContentProviderNative.java:476)
at android.content.ContentResolver.insert(ContentResolver.java:1274)
at android.app.DownloadManager.enqueue(DownloadManager.java:1014)
at com.udacity.MainActivity.startDownload(MainActivity.kt:124)
at com.udacity.MainActivity.download(MainActivity.kt:96)
at com.udacity.MainActivity.onCreate$lambda-0(MainActivity.kt:52)
at com.udacity.MainActivity.$r8$lambda$3NfQc1qKvvShQbwLc_qeJ0be78s(MainActivity.kt)
at com.udacity.MainActivity$$ExternalSyntheticLambda0.onClick(D8$$SyntheticClass)
at android.view.View.performClick(View.java:5610)
at android.view.View$PerformClick.run(View.java:22265)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
In MainActivity : downloadManager.enqueue(request)
Method to call DownloadManager to start Download file
kotlin
private fun startDownload() {
custom_button.buttonState = ButtonState.Clicked
val request = DownloadManager.Request(Uri.parse(url)) .setTitle(getString(R.string.app_name))
.setDescription(getString(R.string.app_description))
.setAllowedOverMetered(true)
.setAllowedOverRoaming(true)
val downloadManager = getSystemService(DOWNLOAD_SERVICE) as DownloadManager downloadID = downloadManager.enqueue(request)// enqueue puts the download request in the queue.
}
In Manifest using :
<uses-permission android:name="android.permision.INTERNET"/>