2014-06-06 7 views
7

Mentre è possibile dichiarare un 'locale' BroadcastReceiver tramite codice in modo che riceve intenti pubblicati tramite un LocalBroadcastManager.ExBroadcatReceiver dichiarato nel manifest.xml non ricevere intenti LocalBroadcastManager

LocalBroadcastManager.getInstance(this).registerReceiver(new FooReceiver(), new IntentFilter("foo_intent_filter")); 

Mi chiedo se sia possibile dichiarare tale ricevitore tramite il manifest .xml (pulitore).

Quando utilizzo il "manifest way", il destinatario è non "riceve" gli intent.

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

Mi manca qualcosa? oppure il codice è l'unica soluzione praticabile.

Grazie

risposta

5

mi chiedo se è possibile dichiarare come ricevitore attraverso il manifest.xml (pulito).

Innanzitutto, ciò non è possibile.

In secondo luogo, la registrazione nel file manifest ha poco a che fare con "essere più pulito". Consentire a Android di istanziare il ricevitore da solo, in modo da poter rispondere alle trasmissioni quando il processo non è in esecuzione. E, nell'esempio specifico che citi, è consentire a qualsiasi app sul sistema di inviarti una trasmissione. Nessuno di questi è rilevante per LocalBroadcastManager.

Problemi correlati