2014-06-06 3 views
7

Während es möglich ist eine ‚Local‘ BroadcastReceiver über Code zu erklären, so dass es Absichten empfängt über eineBroadcatReceiver erklärte in manifest.xml Empfang nicht LocalBroadcastManager Absichten

LocalBroadcastManager.Ex veröffentlicht
LocalBroadcastManager.getInstance(this).registerReceiver(new FooReceiver(), new IntentFilter("foo_intent_filter")); 

Ich frage mich, ob es möglich ist, deklarieren Sie diesen Empfänger über die Manifest .xml (Reiniger).

Wenn ich den "manifesten Weg" verwende, ist der Empfänger nicht ' die Intents empfangen.

<receiver 
     android:name="FooReceiver" 
     android:enabled="true" 
     android:exported="false" > 
     <intent-filter> 
      <action android:name="foo_intent_filter" /> 
     </intent-filter> 
    </receiver> 

bin ich etwas fehlt? oder der Code-Weg ist die einzige praktikable Lösung.

Dank

Antwort

5

Ich frage mich, ob es möglich ist, solche Empfänger über die manifest.xml (Reiniger) zu erklären.

Erstens ist das nicht möglich.

Zweitens hat die Registrierung im Manifest wenig damit zu tun, dass es "sauberer" ist. Es ermöglicht Android, den Empfänger selbst zu instanziieren, sodass Sie auf Broadcasts reagieren können, wenn Ihr Prozess nicht ausgeführt wird. Und in dem konkreten Beispiel, das Sie anführen, soll es jeder App auf dem System erlauben, Ihnen eine Sendung zu senden. Keine davon ist relevant für LocalBroadcastManager.

Verwandte Themen