2014-12-13 6 views
5

Ciao Vedo che alcuni ricevitori di trasmissione utilizzano questo tag android:exported="true" in Android Manifest.xml per la registrazione.Qual è l'uso di Android: esportato = "true" in BroadcastReceiver

<receiver android:exported="true" android:name="com.flyingsoftgames.googleplayquery.QueryReceiver"> 
    <intent-filter> 
     <action android:name="com.android.vending.INSTALL_REFERRER" /> 
    </intent-filter> 
</receiver> 

Che cosa è esattamente l'uso di android:exported="true" per registrare il ricevitore di broadcast in Android?

Grazie in anticipo.

risposta

8

Dal Developer Guide:

Android: esportati o meno il ricevitore di broadcast può ricevere messaggi da fonti esterne sua applicazione - "true" se si può, e "false" in caso contrario. Se "falso", gli unici messaggi che il destinatario della trasmissione può ricevere sono quelli inviati da componenti della stessa applicazione o delle applicazioni con lo stesso ID utente. Il valore predefinito dipende dal fatto che il ricevitore di trasmissione contenga filtri di intent. L'assenza di filtri significa che può essere invocato solo da oggetti Intent che specificano il suo nome di classe esatto. Ciò implica che il ricevitore è inteso solo per uso interno all'applicazione (dato che altri normalmente non conoscono il nome della classe). Quindi in questo caso, il valore predefinito è "falso". D'altro canto, la presenza di almeno un filtro implica che il destinatario della trasmissione sia destinato a ricevere intenti trasmessi dal sistema o da altre applicazioni, pertanto il valore predefinito è "true".

Questo attributo non è l'unico modo per limitare l'esposizione esterna del ricevitore di una trasmissione. È inoltre possibile utilizzare un'autorizzazione per limitare le entità esterne che possono inviarlo messaggi (vedere l'attributo di autorizzazione).

4

android:exported

true: ricevitore di broadcast può ricevere gli eventi inviati da stessi o altre applicazioni

false‍: ricevitore di broadcast può ricevere gli eventi inviati da stessa applicazione

+2

Quindi, se voglio ascoltare per eventi di sistema (es. stato di attivazione/disattivazione Bluetooth), dovrei usare ** exported = true **? –

+0

@IgorGanapolsky In tal caso non è necessario utilizzare questo attributo. – CopsOnRoad