Sto provando a passare un oggetto a un BroadcastReceiver che eseguirà qualcosa al termine del download. Come posso accedere all'oggetto Intent nel metodo onReceive di BroadcastReceiver dalla mia attività? In questo momento ho questo nella mia attività:Passare dati a BroadcastReceiver da Attività utilizzando DownloadManager
DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
long id = manager.enqueue(request);
e ho questo nel mio BroadcastReceiver che fa cose quando il download è completato:
DownloadManager mgr = (DownloadManager)context.getSystemService(Context.DOWNLOAD_SERVICE);
Funziona tutto bene, il mio BroadcastReceiver fa quello che voglio quando il download termina. Ma ora voglio passare un oggetto dalla mia attività al BroadcastReceiver. Di solito, vorrei solo creare un intento e aggiungere l'oggetto all'intento. Ma, non ho creato un Intent nel mio codice perché BroadcastReceiver risponde al download utilizzando Context.DOWNLOAD_SERVICE.
Nel mio BroadcastReceiver, voglio ottenere dati dall'oggetto Intent nel metodo qui OnReceive():
@Override
public void onReceive(Context context, Intent intent)
{
intent.getParcelableExtra("object");
}
Come faccio a passare i dati in questo oggetto Intent dalla mia attività? Come posso accedervi? Ho provato ad utilizzare getIntent().putExtra("object", object)
ma sembra essere un intento diverso da quello utilizzato nel metodo OnReceive del BroadcastReceiver perché ho un NullPointerException
Edit: qui è il mio codice rilevante 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>
Will chiamando sendBroadcast (i) chiamare il BroadcastReceiver più di una volta però? Perché in questo momento, il mio BroadcastReceiver viene chiamato senza chiamare sendBroadcast() e senza creare un intent. – theDazzler
stai utilizzando registerReceiver (onDownloadComplete, new IntentFilter (DownloadManager.ACTION_DOWNLOAD_COMPLETE)); per registrare il ricevitore per il download manager –
No, è nel mio xml però. Sto usando il codice fornito nella mia domanda e il codice ricevente nel mio AndroidManifest.xml. Controlla la mia modifica per vedere l'xml – theDazzler