
我必须使用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.要解决此问题,您必须先申请权限对话框并批准该权限,然后才能将其用于您的应用.
总结以上是内存溢出为你收集整理的原因:java.lang.IllegalStateException:无法在Android 6.0设备中创建目录全部内容,希望文章能够帮你解决原因:java.lang.IllegalStateException:无法在Android 6.0设备中创建目录所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)