首页 > 解决方案 > 将应用程序从 28 定位到 29 后的 Android 下载管理器 - setDestinationInExternalPublicDir() - 不是标准目录之一:MyDir/videos/

问题描述

我在 Play 商店中有应用程序,目标版本为 28。在应用程序中,我使用了下载管理器,它将文件下载到自定义目录。现在根据 Play 商店要求政策,应用程序目标版本应更新为 29。因此,我已更新为 29,但之后当我尝试下载文件时,下载管理器在Android 10(Q)中出现以下错误。

不是标准目录之一:MyDir/videos/

我已经阅读了一些解决方案,发现它只允许存储在公共目录中,如 DIRECTORY_DOWNLOADS、DIRECTORY_DCIM 等。但问题是,在当前的实时应用程序中,它从存储用户当前下载数据的 MyDir/videos/ 读取,如果我将路径更改为会导致很多问题的其他目录。所以我正在寻找解决方案,使用它我可以在与当前实时版本相同的自定义目录中下载文件。我附上了我在应用程序中用于下载文件的代码。

代码:

 DownloadManager downloadmanager = (DownloadManager) context.getSystemService(servicestring);
 Uri uri = Uri.parse(url);
 DownloadManager.Request request = new DownloadManager.Request(uri);
 request.setAllowedOverRoaming(false);
 request.setTitle(Title);
 request.setDescription(Description);
 request.setDestinationInExternalPublicDir("MyDir/videos/", filename);            
 request.setVisibleInDownloadsUi(true);
 request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI | DownloadManager.Request.NETWORK_MOBILE);
 Long reference = downloadmanager.enqueue(request);
        
 

标签: androidandroid-download-managerandroid-10.0android-storagescoped-storage

解决方案


推荐阅读