web-dev-qa-db-ja.com

カスタムフォルダーの設定Android Download Manager

Download Managerについて質問があります。サイトからファイルをダウンロードします。ダウンロード用のデフォルトのディレクトリ(Environment.DIRECTORY_DOWNLOAD)を設定すると、すべて正常に機能し、ダウンロードが開始されます。しかし、ディレクトリを変更しようとしても、アプリはファイルをダウンロードしません。特に、/ storage/sdcard/Download/myFolderなど、ダウンロード内のフォルダーにファイルを配置します。どうすれば修正できますか?

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);
24
bott91

以下のコードを確認してください:"sdcard/dhaval_files/"。フォルダ名を置き換えて許可を与えるwrite_external_storage in 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);

    }
88
Dhaval Parmar

使用できるオプションは2つあります。

1)最初にsetDestinationInExternalPublicDirを使用すると、メディアの種類に基づいてAndroidの標準ダウンロードフォルダー(DIRECTORY_DOWNLOADS、DIRECTORY_MUSICなど)でダウンロードできます。これらのファイルはアンインストール後も残ります。

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

最初の引数は、これが正常に機能するための標準のダウンロードディレクトリである必要があり、他のディレクトリにはできません。

2)2番目はsetDestinationInExternalFilesDirで、これは前の方法と同じですが、これらのファイルはアプリのアンインストール後に削除されます。

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

ここで、2番目の引数はnullまたはAndroidダウンロードディレクトリ。

11
zaphod100.10

以下のコードを試してください。

    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
Vinesh Chauhan