Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


BroadcastReceiver no recibe la acción completa de descarga

Estoy intentando capturar eventos completos de descarga, pero mi BroadcastReceiver no los está recibiendo. Aquí está el receptor:

public class DownloadListenerService extends BroadcastReceiver { @Override public void onReceive(final Context context, Intent intent) { System.out.println("got here"); SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context); SharedPreferences.Editor editor = settings.edit(); String action = intent.getAction(); if (DownloadManager.ACTION_DOWNLOAD_COMPLETE.equals(action)) { String downloadPath = intent.getStringExtra(DownloadManager.COLUMN_URI); editor.putString("downloadPath", downloadPath); editor.commit(); } } } 

Aquí está el manifiesto:

  • Android Seekbar con dos pulgares
  • ¿Cómo trabajar, cuando listview dentro del scrollview?
  • Visualización de la imagen del perfil FB en vista de imagen circular en la aplicación
  • ¿Cómo puedo establecer alarmas exactas y repetitivas en Android 4.4?
  • Android, el adaptador de lista devuelve una posición incorrecta en getView
  • TextView en el centro de la pantalla
  •  <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <receiver android:name="com.example.alreadydownloaded.DownloadListenerService" android:exported="true"> <intent-filter> <action android:enabled="true" android:name="android.intent.action.DOWNLOAD_COMPLETE" /> </intent-filter> </receiver> </application> 

    ¿Alguien ve lo que está mal?

  • Reboot / Power Off Emulador de Android
  • Establecer android: showAsAction = "ifRoom | withText" mediante programación
  • Appcompat-v7: 21.0.0 ': No se encontró ningún recurso que coincida con el nombre dado: attr' android: actionModeShareDrawable '
  • Android Studio: falló el proyecto de sincronización de Gradle
  • Línea de dibujo de lienzo de Android - hacer la línea más gruesa
  • Buscar en Play Market con localized Nombre de la aplicación
  • 5 Solutions collect form web for “BroadcastReceiver no recibe la acción completa de descarga”

    1-) utilizar el nombre completo del paquete para su receptor, por ejemplo: com.example.DownloadListenerService

    2-) añadir android: exportado = "verdadero" receptor de difusión puede recibir mensajes de fuentes fuera de su aplicación

    3-) cambiar el nombre de la acción en el filtro de intenciones a "android.intent.action.DOWNLOAD_COMPLETE"

     <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <receiver android:name="com.example.DownloadListenerService" android:exported="true" > <intent-filter> <action android:name="android.intent.action.DOWNLOAD_COMPLETE" /> </intent-filter> </receiver> <uses-permission android:name="android.permission.INTERNET" /> </application> 

    Solo recibiste la emisión si la solicitud era de tu aplicación, así que ejecuta este código dentro de tu aplicación y ver si el receptor se activa

     DownloadManager dm= (DownloadManager) getSystemService(DOWNLOAD_SERVICE); DownloadManager.Request request = new DownloadManager.Request(Uri.parse("https://www.google.com.tw/images/srpr/logo4w.png")); dm.enqueue(request); 

    Creo que el nombre de la acción en tu XML es incorrecto. Los documentos indican que el correcto es: android.intent.action.DOWNLOAD_COMPLETE no DownloadManager.ACTION_DOWNLOAD_COMPLETE – necesitas usar la constante, no el formulario de Java.

     <receiver android:name=".DownloadListenerService" > <intent-filter> <action android:enabled="true" android:name="android.intent.action.DOWNLOAD_COMPLETE" /> </intent-filter> </receiver> 
      <receiver android:name=".BroadCast_Service.Download_BroadCast" android:exported="true"> <intent-filter android:priority="1099"> <action android:name="android.intent.action.DOWNLOAD_COMPLETE" /> </intent-filter> </receiver> 

    Creo que está llamando al servicio DownloadManger desde IntentService / Service. Si es así, quítelo de allí y póngalo en actividad.

    Agregar permiso en el manifiesto android

      <uses-permission android:name="android.permission.SEND_DOWNLOAD_COMPLETED_INTENTS" /> 

    Si la descarga se basa en tu aplicación, ¿necesitas enviar una emisión?

     Intent i = new Intent(); i.setAction(DownloadManager.ACTION_DOWNLOAD_COMPLETE); sendBroadcast(i); 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.