小编Boz*_*jsa的帖子

StorageAccessFramework 和 DownloadManager 的问题

我有一个问题。我正在开发一些流/视频下载应用程序。我正在使用DownloadManager进行视频下载。

请求是提供用户选择保存目的地(SDCard 或内部电话存储)。

我在 Lollipop 上遇到了SAF和 DownloadManager 的问题。

我向用户提供选择用于存储我下载的文件的目录:

Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
startActivityForResult(intent, REQUEST_CODE_FOR_DESTINATION);
Run Code Online (Sandbox Code Playgroud)

在 onActivityResult 我通过

Uri treeUri = data.getData();
DocumentFile destinationDirUri = DocumentFile.fromTreeUri(this, treeUri);
Run Code Online (Sandbox Code Playgroud)

现在,我需要将此目的地设置为 DownloadManager.Request 的目的地

Request request = new DownloadManager.Request(Uri.parse(getDownloadUrl()));
request.setTitle(downloadInfo.getTitle());
request.allowScanningByMediaScanner();
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
request.setDestinationUri(destinationDirUri);
Run Code Online (Sandbox Code Playgroud)

在我选择“下载/视频”目录后,并执行

DownloadManager downloadManager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
downloadManager.enqueue(request);
Run Code Online (Sandbox Code Playgroud)

我正进入(状态

E/RecordDownloader? Error while retrieving download infos    
W/System.err? java.lang.IllegalArgumentException: Not a file URI: content://com.android.externalstorage.documents/tree/primary%3ADownload%2Fvideo
W/System.err? at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:167)
W/System.err? at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:137)
W/System.err? at android.content.ContentProviderProxy.insert(ContentProviderNative.java:475)
W/System.err? at android.content.ContentResolver.insert(ContentResolver.java:1207)
W/System.err? at android.app.DownloadManager.enqueue(DownloadManager.java:946) …
Run Code Online (Sandbox Code Playgroud)

android uri saf

5
推荐指数
0
解决办法
1048
查看次数

标签 统计

android ×1

saf ×1

uri ×1