我已经下载了一些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();