I use DownloadManager to process downloads in my application, I would like to notify the user that the download is complete.
I use the following code that works well
public void downloaddownload(View v){ View v2 = (View) v.getParent(); TextView urlView = (TextView) v2.findViewById(R.id.url); String urlString = (String) urlView.getText().toString(); TextView artistView2 = (TextView) v2.findViewById(R.id.artist); final String artistString = (String) artistView2.getText().toString(); TextView titleView2 = (TextView) v2.findViewById(R.id.title); final String titleString = (String) titleView2.getText().toString(); DownloadManager.Request request = new DownloadManager.Request(Uri.parse(urlString)); request.setDescription(titleString); request.setTitle(artistString); // in order for this if to run, you must use the android 3.2 to compile your app if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { request.allowScanningByMediaScanner(); request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); } request.setDestinationInExternalPublicDir(Environment.DIRECTORY_MUSIC + "/folder", titleString + " - " + artistString + ".mp3"); Toast.makeText(mainContext, "Downloading " + titleString + " - " + artistString, Toast.LENGTH_SHORT).show(); // get download service and enqueue file DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE); manager.enqueue(request); onComplete = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub Toast.makeText(mainContext, "Download \" " + titleString + " - " + artistString + "\" completed", Toast.LENGTH_LONG).show(); } }; registerReceiver(onComplete, new IntentFilter( DownloadManager.ACTION_DOWNLOAD_COMPLETE)); }
The problem is that the onReceive method is also called for previous downloads.
Say I download a.mp3, b.mp3 and c.mp3 when a.mp3 is completed, I get m.mp3 completed, when b.mp3 is completed, I get .m.mp3 and then a new b.mp3 toast is completed ...
How could I prevent this? thanks.
source share