• 赚钱入口【需求资源】限时招募流量主、渠道主,站长合作;【合作模式】CPS长期分成,一次推广永久有收益。主动打款,不扣量;

java.lang.IllegalStateException: Not one of standard directories: /storage/emulated/0/Download/ on Android 10

Android cps12345 2个月前 (08-31) 219次浏览 0个评论

下载并将文件从我的URL保存到Android 10中的外部存储下载目录中。我已使用此代码进行下载。

    public void StartNewDownload(String url) {

    DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));
    request.setDescription("Downloading Profile"); 
    request.setTitle("Abc App");
    request.setDestinationInExternalPublicDir(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)+ File.separator, "parag.jpeg"); 

    DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
    final long downloadId = manager.enqueue(request); 

}

报错

E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.abc, PID: 15197

java.lang.IllegalStateException: Not one of standard directories: /storage/emulated/0/Download/
    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 com.example.abc.Activity.showDetails.StartNewDownload(showDetails.java:102)
    at com.example.abc.Activity.showDetails$1.onClick(showDetails.java:68)

原因

不赞成使用getExternalStoragePublicDirectory API。

使用以下代码将文件保存在标准目录中。

request.setDestinationInExternalPublicDir(Environment.DIRECTORY_PICTURES,"parag.jpeg")

它将尝试保存到标准目录

/storage/emulated/0/Android/data/packagename/files/Pictures/parag.jpg

对于面向Build.VERSION_CODES.Q或更高版本的应用程序,不需要WRITE_EXTERNAL_STORAGE权限,并且dirType必须是已知的公共目录之一,例如Environment#DIRECTORY_DOWNLOADS,Environment#DIRECTORY_PICTURES,Environment#DIRECTORY_MOVIES等。

喜欢 (2)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址