ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

原因:java.lang.IllegalStateException:无法在Android 6.0设备中创建目录

2019-06-28 05:10:37  阅读:119  来源: 互联网

标签:android android-sdcard android-download-manager imagedownload


我必须使用DownloadManager从url存储下载图像并将其存储到带有我自己的目录(如“xyz”)的SD卡中.这是我的代码

File img_directory = null;

img_directory = new File(Environment.getExternalStorageDirectory() + "/xyz");
if (!img_directory.exists()) {
    img_directory.mkdirs();
    DownloadManager mgr = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
    Uri downloadUri = Uri.parse("my image url");
    DownloadManager.Request request = new DownloadManager.Request(downloadUri);
    request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI | DownloadManager.Request.NETWORK_MOBILE)
      .setAllowedOverRoaming(true)
      .setTitle("Demo")
      .setDescription("Something useful. No, really.")
      .setNotificationVisibility(DownloadManager.Request.VISIBILITY_HIDDEN);
      .setDestinationInExternalPublicDir(Environment.getExternalStorageDirectory().getAbsolutePath() + "/xyz", image.jpeg);
    mgr.enqueue(request);
}

此代码将运行至Android 5.1.1.当我在6.0中运行相同的代码时,它会像这样引发错误

Caused by: java.lang.IllegalStateException: Unable to create directory: /storage/emulated/0/storage/emulated/0/xyz at android.app.DownloadManager$Request.setDestinationInExternalPublicDir(DownloadManager.java:538)

我在清单文件中添加了READ和WRITE权限.我该如何解决这个错误?任何人都可以帮助我?提前致谢.

解决方法:

Caused by: java.lang.IllegalStateException: Unable to create directory: /storage/emulated/0/storage/emulated/0/xyz at android.app.DownloadManager$Request.setDestinationInExternalPublicDir(DownloadManager.java:538)

问题似乎与Android 6.0中引入的Android Runtime Permission有关

当您的应用定位为API级别23或更高时,默认情况下所有权限均为false.要解决此问题,您必须先申请权限对话框并批准该权限,然后才能将其用于您的应用.

标签:android,android-sdcard,android-download-manager,imagedownload
来源: https://codeday.me/bug/20190628/1312490.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有