Я использую DownloadManager для загрузки набора файлов в свое приложение. Я не могу понять, как отменить загрузки, поставленные в очередь менеджером загрузки.
Есть две возможности: а. Пользователь может вручную отменить его, скажем, щелкнув его на панели уведомлений. б. Отменить и удалить загрузку через код.
У меня определен следующий приемник.
<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()
до тех пор, пока загрузка не будет завершена. Это как запирать сарай после того, как лошадь убежала. :-) - person CommonsWare   schedule 28.12.2012remove()
чем-то, что находится под вашим контролем, напримерButton
или элементом панели действий. Кроме того, вы подтвердили, чтоdownloadId
возвращается со значением, которое соответствует вашему первоначальному запросу? - person CommonsWare   schedule 29.12.2012