私はDownloadManagerを使用してアプリケーション内に多数のファイルをダウンロードしています。私はdownloadManagerによってエンキューされたダウンロードを取り消す方法を理解することができません。DownloadManagerを使用してダウンロードをキャンセル/停止することはできますか?
2つの可能性があります。 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()'を呼んでいるようではありません。それは、馬がボルト止めされた後に納屋をロックするようなものです。 :-) – CommonsWare
組み込みのダウンロードマネージャはバグがあり、古いデバイスでは動作しないため、私自身のダウンロードワークフローを実装します。 – vorrtex
@ CommonSWare:通知バーがクリックされたときに削除を呼び出しています。通知のクリックイベントは、ダウンロードが完了したかどうかによって異なります。 – PravinCG