2011-05-12 9 views
2

Je veux mettre en œuvre une solution où je veux attraper les intentions android.intent.action.DOWNLOAD_COMPLETED de l'Android Market App i.e après le téléchargement de l'application. L'application Android Market utilise le gestionnaire de téléchargement par défaut et le gestionnaire de téléchargement à la fin du téléchargement envoie une telle intention, mais je n'ai pas été en mesure de le capturer, j'ai suivi this tutorial et s'il vous plaît se référer à this pour avoir plus de détails sur la utilise Download Manager et pour plus d'informations sur Download Manager, référez-vous au this. S'il vous plaît ne me suggère un moyen d'attraper ces intentions.Android: Gestionnaire de téléchargement

EDIT C'est ce que je me sers pour ma diffusion Reciever

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


<application android:icon="@drawable/icon" android:label="@string/app_name"> 
    <receiver 
     android:name=".DownloadReceiver" 
     android:permission="android.permission.SEND_DOWNLOAD_COMPLETED_INTENTS" 
     android:exported="true"> 

     <intent-filter> 
      <action 
       android:name="android.intent.action.DOWNLOAD_COMPLETED"> 
      </action> 
     </intent-filter> 
    </receiver> 
    </application> 
+0

Cela devrait fonctionner, à condition de déclarer le BroadcastReceiver dans votre manifeste. Vous devriez poster votre code. –

Répondre

8

Vous avez tout droit, sauf le nom de l'action dans le filtre intention. Notez le DOWNLOAD_COMPLETE au lieu de DOWNLOAD_COMPLETED

<receiver 
     android:name=".DownloadReceiver" 
     android:exported="true" 
     android:icon="@drawable/download_icon" > 
     <intent-filter> 
      <action android:name="android.intent.action.DOWNLOAD_COMPLETE" /> 
     </intent-filter> 
    </receiver>   

Cela a fonctionné pour moi. Vous n'avez pas besoin d'enregistrer le récepteur dans le code, cela vous permettra d'écouter même si votre application n'est pas en cours d'exécution.

1

d'abord enregistrer le recepteur

registerReceiver(onComplete, 
new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE)); 

Et définir un BroadcastReciever pour capturer l'événement.

BroadcastReceiver onComplete=new BroadcastReceiver() { 
     public void onReceive(Context ctxt, Intent intent) { 
      // run your action here 
     } 
    }; 
+0

Oui mais encore je ne peux pas attraper la diffusion – hassanadnan

+0

téléchargez-vous en utilisant le DownloadManager()? De plus, si vous développez un build sur DownloadManager(), vous vous limitez à la version 2.3, vous pouvez envisager d'utiliser AsyncTask, vous pouvez donc télécharger en arrière-plan et être pris en charge dans 2.2. –

0

Probablement que votre récepteur est déclaré avec une priorité inférieure à celle enregistrée pour l'application Market. Essayez d'utiliser IntentFilter.setPriority() ou déclarer la priorité sur XML here

Questions connexes