12

Ho creato uno BroadcastReceiver, che riceve BOOT_COMPLETED.Android: OnBootReceiver: il destinatario esportato non richiede il permesso

Nel mio AndroidManifest.xml ho aggiunto in questo modo:

<receiver 
    android:name=".OnBootReceiver"> 
    <intent-filter> 
     <action android:name="android.intent.action.BOOT_COMPLETED" /> 
     <action android:name="android.intent.action.QUICKBOOT_POWERON" /> 
    </intent-filter> 
</receiver> 

Tuttavia, ottengo l'avvertimento: ricevitore esportato non richiede il permesso. Ne ho letto su SO, ma non lo capisco appieno.

Così qualcuno potrebbe spiegare a questo principiante :) perché sto ricevendo questo avviso e cosa fare contro di esso (e perché)?

+0

significa solo che chiunque può chiamarlo, in quanto è pubblico e non richiede il permesso (un ricevitore può richiedere un permesso specifico per essere chiamato) – njzk2

+0

@ njzk2 ma non aggiungendolo lo fa smettere di funzionare? Ricordo che ho provato una volta e non ha lavoro ma il mio codice ha alcuni problemi quindi non ne sono sicuro –

+0

@ njzk2 Quindi, in realtà, non devo fare nulla contro di esso? – Xander

risposta

5

È possibile rimuovere questo avvertimento con l'aggiunta di android:exported="false" al tag ricevitore (vedere questa risposta: https://stackoverflow.com/a/11526028/757073)

+7

E se si imposta esportato su falso, può è ancora chiamato quando l'avvio è completato? – Xander

7

L'avvertimento "Esportato ricevitore non richiede autorizzazione" indica, Hai intent-filtro con una certa azione (che significa che per impostazione predefinita hai Android: exported = "true" set e ora può ricevere le trasmissioni dalle emittenti ANY all'esterno della tua applicazione) Poiché può ricevere trasmissioni dalle emittenti ANY al di fuori della tua applicazione, ti avverte tramite dicendo "Ehi, sei sicuro che ANY bro Adcaster può invocarti? A mio parere, è meglio se si consente solo quelle emittenti per invocare che ha il permesso è stato impostato per questo ricevitore tramite Android: permessi "

Spero che questo sia chiaro !!!

+0

e se fosse solo una parte dell'API? come in questo esempio, il boot è completo? o come quando è stata scattata una nuova immagine della fotocamera (usando questo: http://java.labsoft.dcc.ufmg.br/apiminer/static/docs/reference/android/hardware/Camera.html#ACTION_NEW_PICTURE)? –