una samsung puedo play pendientes eliminar detener descargas descarga curso como cancelar android android-download-manager

android - samsung - ¿Es posible cancelar/detener una descarga iniciada utilizando DownloadManager?



eliminar descarga en curso (1)

Puede cancelar descargas a través de DownloadManager llamando a su método de remove(long...) . Para esto necesitas el ID de la descarga. Desde mi experiencia, básicamente hay dos formas confiables de cómo obtenerlo:

  1. Recuerde el valor de retorno del método enqueue(DownloadManager.Request) .
  2. Consulte el DownloadManager para descargas a través del método de query(DownloadManager.Query) . Luego recupere los ID del Cursor devuelto, se almacenan en la columna denominada DownloadManager.COLUMN_ID .

Receptor de radiodifusión

Desde mi experiencia, no es confiable recuperar la ID de descarga a través de BroadcastReceiver para la acción android.intent.action.DOWNLOAD_NOTIFICATION_CLICKED (aunque la transmisión siempre se envía).

  1. Obteniendo IDs de descarga desde DownloadManager. EXTRA_NOTIFICATION_CLICK_DOWNLOAD_IDS extra DownloadManager. EXTRA_NOTIFICATION_CLICK_DOWNLOAD_IDS DownloadManager. EXTRA_NOTIFICATION_CLICK_DOWNLOAD_IDS no funciona correctamente. En algunos dispositivos, siempre devuelve nulo. Si devuelve algo en algunos dispositivos, es el ID de la descarga que se inició primero. Y si la primera descarga se termina / cancela, devuelve un nulo para la notificación de las descargas restantes.
  2. Obtener un valor extra de DownloadManager.EXTRA_DOWNLOAD_ID no funciona para esta acción.

Obtener ID en transmisión para la acción android.intent.action.DOWNLOAD_COMPLETE parece confiable. Tienes que obtenerlo desde DownloadManager.EXTRA_DOWNLOAD_ID adicional. Tenga en cuenta que la transmisión no solo se envía para que se complete la descarga, sino que también se envía cuando cancela la llamada de llamada remove() .

Nota: las descargas a veces se agrupan en una notificación, a veces crean múltiples notificaciones. No pude averiguar las condiciones cuando las notificaciones se agrupan o no. Parece depender de muchos factores, como la versión del sistema operativo, el dispositivo, el título de la descarga, ... y en general parece bastante impredecible.

Nota: He probado si puedes cancelar la descarga de otra aplicación y no lo parece. A pesar de que las ID son ID de base de datos que son únicas en todas las aplicaciones. Al llamar a remove() no se cancela la descarga de otra aplicación.

Estoy usando DownloadManager para descargar un montón de archivos en mi aplicación. No puedo averiguar cómo cancelar las descargas que ha sido puesto en cola por downloadManager.

Hay dos posibilidades: a. El usuario puede cancelarlo manualmente si hace clic en la barra de notificaciones. segundo. Cancele y elimine la descarga mediante código.

Tengo el siguiente receptor definido.

<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>

Y en el receptor

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); }

¿Alguna idea?