Application is crashing on Android 10 while downloading video files using DownloadManager
Asked Answered
A

1

5

App crashes while setting setDestinationInExternalPublicDir()

 val videoDir = Environment.getDataDirectory().absolutePath + "/applicationfiles/.tutorial"
downloadRequest.setDestinationInExternalPublicDir(videoDir, videoName)

E/AndroidRuntime: FATAL EXCEPTION: main Process: app.package, PID: 19275 java.lang.IllegalStateException: Not one of standard directories: /data/applicationfiles/.tutorial at android.os.Parcel.createException(Parcel.java:2079) at android.os.Parcel.readException(Parcel.java:2039) at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:188) at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:140) at android.content.ContentProviderProxy.call(ContentProviderNative.java:658) at android.content.ContentProviderClient.call(ContentProviderClient.java:558) at android.content.ContentProviderClient.call(ContentProviderClient.java:546) at android.app.DownloadManager$Request.setDestinationInExternalPublicDir(DownloadManager.java:569) at app.package.startDownloadingFile(ExerciseTutorialPresenter.kt:159) at app.package.downloadVideoFiles(ExerciseTutorialPresenter.kt:142)

Arc answered 21/11, 2019 at 4:17 Comment(0)
C
7

setDestinationInExternalPublicDir(dirType: String!, subPath: String!)

For applications targeting Android 10 and above, the first parameter dirType for this method must be one of the known public directories like Environment.DIRECTORY_DOWNLOADS, Environment.DIRECTORY_PICTURES, Environment.DIRECTORY_MOVIES, etc.

Complect answered 21/11, 2019 at 5:44 Comment(2)
okay, then what if I don't want to expose the downloaded file and I am using, Environment.getDataDirectory() path for download?Arc
For the question I had asked, you are correct that Android 10 accepts only known public directories. And for other folders like "data/data" we can use downloadRequest.setDestinationInExternalFilesDir(context, filePath, fileName)Arc

© 2022 - 2024 — McMap. All rights reserved.