programacion - manual de android en pdf
Configurar carpeta personalizada Android Download Manager (3)
Tengo una pregunta acerca de Download Manager. Voy a descargar un archivo de un sitio. Cuando configuro el directorio predeterminado para la descarga (Environment.DIRECTORY_DOWNLOAD), todo funciona bien y se inicia mi descarga. Pero si intento cambiar el directorio, mi aplicación no descarga el archivo. En particular, quiero que mi archivo vaya a una carpeta dentro de una descarga, por ejemplo / storage / sdcard / Download / myFolder. ¿Cómo puedo arreglar eso?
File mydownload = new File (Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)+ "/myFolder");
if (!mydownload.exists()){
mydownload.mkdir();
}
String url = sUrl[0];
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
request.allowScanningByMediaScanner();
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
}
request.setDestinationInExternalPublicDir(mydownload.getAbsolutePath(),"Myfile.extension");
DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
manager.enqueue(request);
Hay dos opciones disponibles para su uso.
1) primer setDestinationInExternalPublicDir esto le permitirá descargar en cualquiera de las carpetas de descarga estándar de androides según el tipo de medio, por ejemplo, DIRECTORY_DOWNLOADS, DIRECTORY_MUSIC. estos archivos permanecerán después de la desinstalación.
request.setDestinationInExternalPublicDir(DIRECTORY_DOWNLOADS,
File.separator + folderName + File.separator + fileName);
El primer argumento debe ser un directorio de descargas estándar para que esto funcione correctamente y no puede ser otra cosa.
2) el segundo es setDestinationInExternalFilesDir, este es el mismo que el método anterior, con la diferencia de que estos archivos se eliminarán después de la desinstalación de la aplicación.
request.setDestinationInExternalFilesDir(context, DIRECTORY_DOWNLOADS,
File.separator + folderName + File.separator + fileName);
Aquí el segundo argumento puede ser nulo o cualquiera de los directorios de descarga de Android.
Intenta debajo del código :.
String storagePath = Environment.getExternalStorageDirectory()
.getPath()
+ "/Directory_name/";
//Log.d("Strorgae in view",""+storagePath);
File f = new File(storagePath);
if (!f.exists()) {
f.mkdirs();
}
//storagePath.mkdirs();
String pathname = f.toString();
if (!f.exists()) {
f.mkdirs();
}
// Log.d("Storage ",""+pathname);
dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
Uri uri = Uri.parse(image);
checkImage(uri.getLastPathSegment());
if (!downloaded) {
DownloadManager.Request request = new DownloadManager.Request(uri);
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
request.setDestinationInExternalPublicDir("/Directory_name", uri.getLastPathSegment());
Long referese = dm.enqueue(request);
Toast.makeText(getApplicationContext(), "Downloading...", Toast.LENGTH_SHORT).show();
}
verifique el siguiente código: su archivo de guardar en "sdcard/dhaval_files/"
. simplemente reemplace el nombre de su carpeta y otorgue permiso write_external_storage
en el archivo de manifiesto de Android.
public void file_download(String uRl) {
File direct = new File(Environment.getExternalStorageDirectory()
+ "/dhaval_files");
if (!direct.exists()) {
direct.mkdirs();
}
DownloadManager mgr = (DownloadManager) this.getSystemService(Context.DOWNLOAD_SERVICE);
Uri downloadUri = Uri.parse(uRl);
DownloadManager.Request request = new DownloadManager.Request(
downloadUri);
request.setAllowedNetworkTypes(
DownloadManager.Request.NETWORK_WIFI
| DownloadManager.Request.NETWORK_MOBILE)
.setAllowedOverRoaming(false).setTitle("Demo")
.setDescription("Something useful. No, really.")
.setDestinationInExternalPublicDir("/dhaval_files", "test.jpg");
mgr.enqueue(request);
}