Próbuję przekazać obiekt do BroadcastReceiver, który zrobi coś po zakończeniu pobierania. Jak uzyskać dostęp do obiektu Intent w metodzie onReceive programu BroadcastReceiver z mojej aktywności? Teraz mam to w mojej działalności:Przekazywanie danych do BroadcastReceiver z Activity za pomocą DownloadManager
DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
long id = manager.enqueue(request);
i mam to w moim BroadcastReceiver że robi rzeczy po zakończeniu pobierania:
DownloadManager mgr = (DownloadManager)context.getSystemService(Context.DOWNLOAD_SERVICE);
To wszystko działa dobrze, moja BroadcastReceiver robi to, co chcę po zakończeniu pobierania. Ale teraz chcę przekazać obiekt z mojej działalności do BroadcastReceiver. Zazwyczaj po prostu utworzę intencję i dodaję obiekt do intencji. Ale nie stworzyłem intencji w moim kodzie, ponieważ BroadcastReceiver odpowiada na pobieranie za pomocą Context.DOWNLOAD_SERVICE.
W moim BroadcastReceiver, chcę uzyskać dane z zamiarem obiektu w() metoda onReceive tutaj:
@Override
public void onReceive(Context context, Intent intent)
{
intent.getParcelableExtra("object");
}
Jak mogę przekazać dane do tego obiektu Intent z mojej działalności? Jak mam do niego dostęp? Próbowałem za pomocą getIntent().putExtra("object", object)
ale wydaje się być inny zamiar niż ta stosowana w onReceive metoda BroadcastReceiver ponieważ otrzymuję NullPointerException
Edycja: tutaj jest mój odpowiedni kod w 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 nazywając sendBroadcast (I) nazywamy BroadcastReceiver więcej niż jeden raz chociaż? Ponieważ teraz mój BroadcastReceiver jest wywoływany bez wywoływania sendBroadcast() i bez tworzenia intencji. – theDazzler
używasz registerReceiver (onDownloadComplete, new IntentFilter (DownloadManager.ACTION_DOWNLOAD_COMPLETE)); zarejestrować odbiornik do menedżera pobierania –
Nie, ale w moim xml. Używam kodu podanego w moim pytaniu, a także kodu odbiorcy w moim AndroidManifest.xml. Sprawdź moją edycję, aby zobaczyć xml – theDazzler