Maryam
Maryam

Reputation: 913

How to save files with DownloadManager in private path?

I have downloaded some files with DownloadManager, I want to save them where that no one can access them, I mean they are private, just my application can access them and I want after uninstall my app they get deleted. but according to my search DownloadManager can save files just in SDCard that everyone can see my files. can anyone tell me what to do?

Upvotes: 4

Views: 6259

Answers (3)

peyman
peyman

Reputation: 130

For Set Your Path For Download File Use: Work For me (Android 11).

 File file = new File(Environment.getExternalStorageDirectory().getPath() + "/YOUR FOLDER/", "YOUR FILE.(mp3|mp4|pdf|...)");

    request.setDestinationUri(Uri.fromFile(file));

Complete Code:

First Check Directory

  private boolean CreateDirectory() {
boolean ret = false;
File filepath = Environment.getExternalStorageDirectory();
File dir = new File(filepath.getPath() + "/YOUR FOLDER/");
if (!dir.exists()) {
    try {
        dir.mkdirs();
        ret = true;

    } catch (Exception e) {
        ret = false;
        e.printStackTrace();
    }
}
return ret;
}

Then:

     String URL = " YOUR URL ";

        DownloadManager.Request request = new DownloadManager.Request(Uri.parse(URL));
        request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI | DownloadManager.Request.NETWORK_MOBILE);
        request.setTitle("YOUR TITLE");
        request.setDescription("YOUR DESCRIPTION");
        request.allowScanningByMediaScanner();
   request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);

        File file = new File(Environment.getExternalStorageDirectory().getPath() + "/YOUR FOLDER/", "YOUR FILE.(mp3|mp4|pdf|...)");

        request.setDestinationUri(Uri.fromFile(file));
        DownloadManager manager=(DownloadManager)getSystemService(Context.DOWNLOAD_SERVICE);
        Long downloadId= manager.enqueue(request);

ok,Finish

Upvotes: 0

Shalev Moyal
Shalev Moyal

Reputation: 644

You should probably use:

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

Where request is your DownloadManager.Request This folder (sdcard/Android/data/your.app.package) is accessible to the user, but not visible in galleries (not scanned by media scanner), it's only accessible using file manager. Also, this folder will be deleted when your app gets deleted.

Upvotes: 1

Burhanuddin Rashid
Burhanuddin Rashid

Reputation: 5370

You can use internal storage path to save data internally and it will get deleted when your app will get uninstalled

String dir = getFilesDir().getAbsolutePath();

Upvotes: -1

Related Questions