Falscher Broadcast-Receiver wird aufgerufen

  • Antworten:4
Eve
  • Forum-Beiträge: 25

11.08.2013, 22:02:21 via Website

Hallo,

da ich ja ein absoluter Neuling bin, verstehe ich grad die Welt nicht mehr so ganz. Ich habe eine erste App gemacht, und eine zweite App. Beide verwenden einen BroadcastReceiver. Und jetzt wird aber in der zweiten der Receiver der ersten App aufgerufen. Ich seh's im Log-Cat...
Bei wiki hab ich das gefunden:

Jeder BroadcastReceiver lebt nur so lange, wie seine onReceive-Methode aktiv ist. Nach dem Abschluss der Methode haben wir auf die zugehörige Instanz keinen Zugriff mehr, insbesondere nimmt er keine weiteren Broadcasts mehr entgegen. Das ändert natürlich nichts an der Zuordnung der Broadcast-Action zu der BroadcastReceiver-Klasse, so wie sie im Intent-Filter definiert wurde. Für jeden Broadcast wird ein neues Objekt erzeugt. Die Zuordnung bleibt bestehen, so lange die Anwendung installiert ist

Bedeutet das, ich muss erst die erste App löschen bevor die zweite funktioniert?

Beide Apps legen bei Installation eine Datei auf der SD-Karte an.

Ich weiß gar nicht recht wonach ich fragen soll

Also nochmal vielleicht verständlicher:
Erste App: Der Receiver heißt GoldiBroadcastReceiver
Zweite App: der Receiver heißt nur UpdateReceiver

Das Manifest ist an dieser Stelle gleich (bis auf die Namen der Receiver), hier der Auszug aus der zweiten App:

1<receiver
2 android:name="com.gfseapp.broadcast.UpdateReceiver"
3 android:enabled="true"
4 android:exported="false"
5 android:label="@string/app_name" >
6 <intent-filter>
7 <action android:name="android.intent.action.PACKAGE_CHANGED" />
8 <action android:name="android.intent.action.PACKAGE_ADDED" />
9 <action android:name="android.intent.action.PACKAGE_INSTALL" />
10 <action android:name="android.intent.action.PACKAGE_REPLACED" />
11
12 <data
13 android:path="com.gfseapp.broadcast.UpdateReceiver"
14 android:scheme="package" />
15 </intent-filter>
16 </receiver>

Ja, und im LogCat , wenn ich die zweite App instsalliere, sehe ich eben jetzt das hier:

I/GoldiUpdateReceiver( 3528): package:com.gfseapp
I/GoldiUpdateReceiver( 3528): uri-pfad = null
E/GoldiUpdateReceiver( 3528): ERROR creating GoldiUpdateReciever!

Natürlich kann er GoldiUpdateReceiver nicht createn! Goldi gehört doch zur ersten App, ich installiere aber die zweite, die gfse-App !

?

Danke für jedes Licht in mein Dunkel!
;-)

LG,
Eve

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

11.08.2013, 23:52:14 via Website

Es werden alle bekannten receiver aufgerufen, je nach Filter einstellungen.

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
Eve
  • Forum-Beiträge: 25

12.08.2013, 20:19:41 via Website

Danke für die Antwort!

Ich habe mich durchgegoogelt und beschlossen, dass jetzt doch lieber ein LoadBroadcastManager das richtige für meine Zwecke ist. Ich habe auch ein Code-Beispiel gefunden, das ich einigermaßen verstehe. Doch jetzt verstehe ich nicht, was ich micht meinem vorherigen Code machen soll.

Also ich habe jetzt neu die ganze Broadcast-Geschichte in die Datei MainActivity.java geschrieben.

Dann gibt es in meinem Projekt noch das package com.gfseapp.broadcast mit der Datei UpdateReceiver.java. Da ist mein bisheriger Receiver drin, so wie ich das vorher hatte, mit dem statischen Receiver.

Das brauche ich jetzt ja nicht mehr, oder? D.h. mein com.gfseapp.broadcast kann ich komplett löschen?

Und aus dem Manifest muss der alte Receiver auch raus, oder?

Ich freue mich mal wieder über jedes Lichtlein... :-)

Danke!
:-)

LG,
Eve

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

12.08.2013, 20:35:00 via Website

Ohh, einmal geschriebender Code wird bei dir nie gelöscht ? Ich mach das ständig. Einen Receiver einfach aus dem Manifest einfernen und gut ist. Lokal oder statisch, ist doch wurst. Abgesehen davon ist alter Code ein mittel andere und sich selbst zu verwirren mit dingen die nicht mehr gebraucht werden.

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
Eve
  • Forum-Beiträge: 25

14.08.2013, 18:11:27 via Website

Hallo,

das sollte kein Jammern gewesen sein im Sinn von "Oh ich Arme, ich muss schon wieder Code löschen", sondern war eigentlich als Frage gedacht.

Also ich habe jetzt den Broadcast-Code aus dem Manifest gelöscht, und alles in meine MainActivity.java geschrieben, wie im Internet gefunden, aber irgendwie mag die App jetzt nicht mehr... Die Funktionen wie onResume() oder onPause() werden nicht aufgerufen.

???

Danke!
:-)

LG,
Eve

Antworten