Définir le dossier personnalisé Gestionnaire de téléchargement Android

j'ai une question à propos de Download Manager. Je vais télécharger un fichier à partir d'un site. Quand j'ai défini le répertoire par défaut pour le téléchargement (environnement.DIRECTORY_DOWNLOAD) tout fonctionne très bien et mon téléchargement est lancé. Mais si j'essaie de changer le répertoire, mon application ne télécharge pas le fichier. En particulier, je veux que mon fichier aille dans un dossier à L'intérieur d'un téléchargement, par exemple /storage/sdcard/Download/myFolder. Comment je peux arranger ça?

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);
21
demandé sur tjpaul 2013-05-27 16:34:52

3 réponses

cochez ci-dessous le code: son fichier de sauvegarde dans "sdcard/dhaval_files/". il suffit de remplacer le nom de votre dossier et de donner la permission write_external_storage dans le fichier de manifeste 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);

    }
83
répondu Dhawal Sodha Parmar 2013-05-27 13:07:39

Il y a deux options disponibles pour vous à utiliser.

1) first setDestinationInExternalPublicDir ceci vous permettra de télécharger dans n'importe quel dossier de téléchargement standard d'androids basé sur le type de média EG DIRECTORY_DOWNLOADS, DIRECTORY_MUSIC. ces fichiers resteront après désinstallation.

request.setDestinationInExternalPublicDir(DIRECTORY_DOWNLOADS,
        File.separator + folderName + File.separator + fileName);

le premier argument devrait être un répertoire standard de téléchargements pour que cela fonctionne correctement et ne puisse pas être autre chose.

2) le second est misdestinationinexternalfilesdir ce sont les mêmes que la méthode précédente à la différence que ces fichiers seront supprimés après l'application de désinstallation.

request.setDestinationInExternalFilesDir(context, DIRECTORY_DOWNLOADS, 
        File.separator + folderName + File.separator + fileName);

ici, le second argument peut être null ou n'importe lequel des répertoires de téléchargement android.

8
répondu zaphod100.10 2015-02-11 06:55:34

Essayez Le Code Ci-Dessous:.

    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();
                }
1
répondu Vinesh Chauhan 2017-08-08 06:39:14