Мне нужно загрузить изображение с URL-адреса с помощью DownloadManager и сохранить его в SD-карте с моим собственным каталогом, например «xyz». Это мой кодВызвано: java.lang.IllegalStateException: невозможно создать каталог на устройствах Android 6.0
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)
Я добавил разрешения чтения и записи в файле манифеста. Как я могу устранить эту ошибку? Любое тело может мне помочь? Заранее спасибо.
Вы ориентируетесь на приложение для api 23? Если это так, вам придется попросить разрешения на запись во время выполнения: http://developer.android.com/training/permissions/requesting.html – Praeterii