Ich versuche, ein Objekt an einen BroadcastReceiver übergeben, der etwas tun wird, wenn ein Download abgeschlossen ist. Wie greife ich aus meiner Aktivität auf das Intent-Objekt in der onReceive-Methode des BroadcastReceivers zu? Im Moment habe ich dies in meiner Tätigkeit:Übergeben Sie Daten an BroadcastReceiver von Aktivität mit DownloadManager
DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
long id = manager.enqueue(request);
und ich habe dies in meinem BroadcastReceiver die Sachen tut, wenn der Download abgeschlossen ist:
DownloadManager mgr = (DownloadManager)context.getSystemService(Context.DOWNLOAD_SERVICE);
Es funktioniert alles gut, mein BroadcastReceiver tut, was ich will wenn der Download abgeschlossen ist. Aber jetzt möchte ich ein Objekt von meiner Aktivität an den BroadcastReceiver übergeben. Normalerweise würde ich nur eine Absicht erstellen und das Objekt der Absicht hinzufügen. Ich habe jedoch keine Absicht in meinem Code erstellt, da der BroadcastReceiver auf den Download mit Context.DOWNLOAD_SERVICE reagiert.
In meinem BroadcastReceiver, mag ich hier in der Methode OnReceive() Daten aus dem Intent-Objekt erhalten:
@Override
public void onReceive(Context context, Intent intent)
{
intent.getParcelableExtra("object");
}
Wie kann ich Daten in dieses Intent Objekt aus meiner Tätigkeit übergeben? Wie kann ich darauf zugreifen? Ich habe versucht, getIntent().putExtra("object", object)
verwenden, aber es scheint eine andere Absicht als die in der OnReceive Methode des BroadcastReceiver verwendet zu sein, weil ich eine Nullpointer
bearbeiten erhalten: hier ist mein entsprechenden Code in AndroidManifest.xml
<receiver
android:name="com.android.devon.appfrenzy.DownloadReceiver"
android:exported="true" >
<intent-filter>
<action android:name="android.intent.action.DOWNLOAD_COMPLETE" />
</intent-filter>
</receiver>
Wird sendBroadcast (i) rufen Sie die BroadcastReceiver mehr als einmal obwohl nennen? Weil mein BroadcastReceiver gerade aufgerufen wird, ohne sendBroadcast() aufzurufen und ohne eine Absicht zu erstellen. – theDazzler
verwenden Sie registerReceiver (onDownloadComplete, neuer IntentFilter (DownloadManager.ACTION_DOWNLOAD_COMPLETE)); Empfänger für Download-Manager zu registrieren –
Nein, es ist in meinem Xml obwohl. Ich verwende den in meiner Frage angegebenen Code sowie den Empfängercode in meiner AndroidManifest.xml. Überprüfen Sie meine Bearbeitung, um das XML zu sehen – theDazzler