Issue
I'm aware similar questions have been asked before but there really isn't a working solution. I am downloading multiple PDF files through the DownloadManager and I want to save these files into the cache folder of the app's memory but couldn't find any way of doing that.
This is my code:
public class MainActivity extends AppCompatActivity {
Button btn;
DownloadManager downloadManager;
List<String> myList = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myList.add("https://doc.lagout.org/programmation/Actionscript%20-%20Flash%20-%20Flex%20-%20Air/Flash%20Development%20for%20Android%20Cookbook%20-%20Labrecque%20-%20Packt%20%282011%29/Flash%20Development%20for%20Android%20Cookbook%20-%20Labrecque%20-%20Packt%20%282011%29.pdf");
myList.add("http://www.csc.kth.se/utbildning/kth/kurser/DD143X/dkand11/Group1Mads/andreas.ulvesand.daniel.eriksson.report.pdf");
myList.add("http://enos.itcollege.ee/~jpoial/allalaadimised/reading/Android-Programming-Cookbook.pdf");
myList.add("https://x.coe.phuket.psu.ac.th/warodom/242-320/ebook/9781785883262-ANDROID_PROGRAMMING_FOR_BEGINNERS.pdf");
myList.add("https://www.cs.cmu.edu/~bam/uicourse/830spring09/BFeiginMobileApplicationDevelopment.pdf");
myList.add("https://commonsware.com/Android/Android-1_0-CC.pdf");
btn = findViewById(R.id.download_btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
downloadManager = (DownloadManager)getSystemService(Context.DOWNLOAD_SERVICE);
for(int i = 0; i < myList.size(); i++) {
Uri uri = Uri.parse(myList.get(i));
DownloadManager.Request request = new DownloadManager.Request(uri);
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
Long reference = downloadManager.enqueue(request);
}
}
});
}
}
Solution
From the documentation
Internal storage: It's always available. Files saved here are accessible by only your app. When the user uninstalls your app, the system removes all your app's files from internal storage.
Android built-in download manager can't access your app internal storage, so you can only save your files into an external storage directory just by calling setDestinationInExternalFilesDir
or setDestinationInExternalPublicDir
.
But if you want to save them in your internal storage, just register a receive and then copy files from the external to internal storage.
Answered By - Saeed Masoumi
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.