Unterscheiden implizite broadcast receiver vs explizite broadcast receiver in der Manifestdatei

Gemäß dem migration guide to Android O gegeben von Google, die meisten der impliziten broadcast-intent sollte nicht registriert werden, die im Manifest (minus ein paar Ausnahmen gefunden hier), aber explizite broadcast intents bleiben unberührt.

Suchen wir verschieben alle benötigten broadcast-Weg aus dem manifest. Aber wie können wir erkennen, wenn ein Empfänger implizit ist? Gibt es eine Allgemeine Regel?

Hier ist ein Beispiel für die übertragungen registrieren wir im manifest. Sollte wir schauen nur auf die "action" - tag und sehen, wenn es in der Positivliste eingetragen ist es im manifest?

<receiver
    android:name=".receiver.ImageBroadcastReceiver"
    android:enabled="true" >
    <intent-filter>
        <action android:name="android.hardware.action.NEW_PICTURE" />
        <category android:name="android.intent.category.OPENABLE" />
        <data android:mimeType="image/*" />
    </intent-filter>
</receiver>

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

<receiver android:name=".receiver.JoinEventReceiver" >
    <intent-filter>
        <action android:name="JOIN_ACTION" />
        <action android:name="CANCEL_ACTION" />
        <action android:name="DECLINE_ACTION" />
    </intent-filter>
</receiver>

Beispielsweise "com.android.vending.INSTALL_REFERRER" Vorsatz ist nicht auf der Whitelist. Sollten wir registrieren, es in eine Aktivität? Wenn dem so ist, wäre es nicht nie abgefeuert, als wenn wir es registrieren die app bereits installiert ist? Dies ist, was mich verwirrt, wenn Sie versuchen zu verstehen, wenn ein broadcast receiver ist eine implizite oder explizite als ich dachte, ich hatte nur zu prüfen, ob "action" - tag.

InformationsquelleAutor Gauthier | 2017-09-08
Schreibe einen Kommentar