我正在使用DownloadManager在我的应用程序中下载一堆文件。我无法弄清如何取消由downloadManager排队的下载。
有两种可能性: a.用户可以手动取消它,例如通过通知栏中的点击。 b.通过代码取消和删除下载。
我定义了以下接收器。
<receiver
android:name=".DownloadStatusReceiver"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.DOWNLOAD_COMPLETE" />
<action android:name="android.intent.action.DOWNLOAD_NOTIFICATION_CLICKED" />
</intent-filter>
</receiver>
并且在接收器中
if (DownloadManager.ACTION_NOTIFICATION_CLICKED.equals(action)) {
Constants.showLog(TAG, "Notification clicked");
long downloadId = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, 0);
DownloadManager dm =(DownloadManager)context.getSystemService(Context.DOWNLOAD_SERVICE);
dm.remove(downloadId);
}
有任何见解吗?
remove()
应该可以正常工作。当然,在下载完成之前似乎没有调用remove()
。这就像是在马跑出去之后才锁上谷仓。 :-) - CommonsWareremove()
实验。此外,你确认downloadId
返回了一个值,并且与你最初的请求匹配吗? - CommonsWare