Как Android разрешает несколько записей в AndroidManifest для одного и того же широковещательного приемника с разными разрешениями и фильтрами намерений? - PullRequest
3 голосов
/ 30 августа 2011

Я столкнулся с этой проблемой определения разрешений, относящихся к фильтрам намерений для конкретного широковещательного приемника.Мне было интересно, как Android разрешит что-то ниже, и если есть лучший способ сделать это.

    <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>

Мне интересно знать, включены ли оба вышеупомянутых тега приемника в AndroidManifest, как это будет?будет решаться Android, и позволит ли это мне достичь того, что я намерен, а именно обеспечить исполнение разрешения XY для намерения ACT и Z для SLOW_ACT.Обратите внимание, что это один и тот же объект-получатель для обоих.

1 Ответ

1 голос
/ 30 августа 2011

Я действительно не уверен, как он справится с двумя разными, но независимо, я бы сказал, что это плохая практика - использовать два списка манифеста для одного получателя.То, что вы могли бы сделать, это просто сделать два приемника вещания или просто сделать один приемник с обоими фильтрами намерений.Тогда вы могли бы использовать дополнительные данные, чтобы контролировать, соответствует ли это тому, что вы хотели, или нет.

Правда, я бы порекомендовал два приемника.

И я бы подумал, что у вашего одного получателя будут оба фильтра намерений, и для каждого вызова потребуются оба разрешения.На самом деле все, что вы можете сделать, чтобы узнать это, проверить это.

...