如何保存文件与下载管理器在私人路径



我已经下载了一些DownloadManager文件,我想把它们保存在没有人可以访问它们的地方,我的意思是它们是私人的,只有我的应用程序可以访问它们,我想卸载我的应用程序后,它们被删除。但根据我的搜索DownloadManager可以保存文件只是在SDCard,每个人都可以看到我的文件。有人能告诉我该怎么做吗?

您可能应该使用:

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

请求是你的下载管理器。请求用户可以访问这个文件夹(sdcard/Android/data/your.app.package),但在图库中不可见(没有被媒体扫描仪扫描),只能使用文件管理器访问。另外,当你的应用被删除时,这个文件夹也会被删除。

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

完整代码:

第一次检查目录

  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;
}

:

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

好的,完成

你可以使用内部存储路径来保存内部数据,当你的应用程序被卸载时,它将被删除

String dir = getFilesDir().getAbsolutePath();