first of all save the long id
of download request in shared preferences
like this
SharedPreferences preferenceManager = PreferenceManager.getDefaultSharedPreferences(ACTIVITY CONTEXT);
Editor PrefEdit = preferenceManager.edit();
PrefEdit.putLong("Download_ID", id);
PrefEdit.commit();
now write a custom broadcast receiver
which will listen to click on recently started download.
public class DownloadManagerBR extends BroadcastReceiver {
DownloadManager down_m ;
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
down_m = (DownloadManager)context.getSystemService(Context.DOWNLOAD_SERVICE);
SharedPreferences preferenceManager
= PreferenceManager.getDefaultSharedPreferences(context);
long id = preferenceManager.getLong("Download_ID", 0);
if (DownloadManager.ACTION_DOWNLOAD_COMPLETE.equals(action)) {
}
else if (DownloadManager.ACTION_NOTIFICATION_CLICKED.equals(action)) {
//IN THIS SECTION YOU CAN WRITE YOUR LOGIC TO CANCEL DOWNLOAD AS STATED IN ABOVE ANSWER
downloadManager.remove(id);
}
}
}
and register your broadcast receiver in Android Manifest
like this
<receiver android:name=".DownloadManagerBR" >
<intent-filter>
<action android:name="android.intent.action.DOWNLOAD_COMPLETE" />
<action android:name="android.intent.action.DOWNLOAD_NOTIFICATION_CLICKED" />
</intent-filter>
</receiver>