3 Stimmen

Wie löst Android mehrere Einträge im AndroidManifest für denselben Rundfunkempfänger mit unterschiedlichen Berechtigungen und Intent-Filtern auf?

Ich habe in diesem Problem der Definition von Berechtigungen, die spezifisch für Absicht-Filter für einen bestimmten Rundfunkempfänger sind laufen. Ich fragte mich, wie Android etwas unten lösen würde, und wenn es eine bessere Möglichkeit, dies zu tun.

    <receiver android:name=".MyReceiver" 
              android:permission="com.permission.XY"
              android:exported="true">
        <intent-filter>
            <action android:name="com.local.intent.ACT" />
        </intent-filter>
    </receiver>

    <receiver android:name=".MyReceiver" 
              android:permission="com.permission.Z"
              android:exported="true">
        <intent-filter>
            <action android:name="com.local.intent.SLOW_ACT" />
        </intent-filter>
    </receiver>

Ich bin daran interessiert, zu wissen, ob, wenn beide oben genannten Empfänger-Tags in AndroidManifest enthalten sind, wie es von Android aufgelöst wird, und ob es mir erlaubt, zu erreichen, was ich beabsichtige, nämlich die Erlaubnis XY für ACT Absicht und Z für SLOW_ACT zu erzwingen. Beachten Sie, dass es sich um das gleiche Empfängerobjekt für beide handelt.

1voto

Reed Punkte 14297

Ich bin mir nicht sicher, wie es mit den zwei verschiedenen Listen umgehen würde, aber unabhängig davon würde ich sagen, dass es schlechte Praxis ist, zwei Listen für einen Empfänger zu verwenden. Was Sie tun könnten, ist nur zwei Broadcast-Empfänger zu machen, oder machen Sie nur einen Empfänger mit beiden Absicht Filter. Dann könnten Sie zusätzliche Daten verwenden, um zu kontrollieren, ob sie mit dem übereinstimmen, was Sie wollten oder nicht.

Ich würde aber wirklich zwei Empfänger empfehlen.

Und ich würde denken, dass Ihr einer Empfänger beide Absichtsfilter hat und beide Berechtigungen für jeden Anruf erforderlich sind. Wirklich alles, was Sie tun könnten, um herauszufinden, ist es zu testen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X