Неявные трансляции: как сохранить обратную совместимость с pre-oreo - PullRequest
0 голосов
/ 03 апреля 2019

Теперь, начиная с Oreo, приложения Android должны удалять все неявные трансляции из файла манифеста.

Для моего приложения Music Player, для более ранних версий, мне нужно объявить эти действия в манифесте:

       <intent-filter>
            <action android:name="android.intent.action.MEDIA_BUTTON" />
            <action android:name="android.intent.action.HEADSET_PLUG" />
        </intent-filter>

Я не знаю, поддерживает ли Android объявление файла манифеста для каждой версии API, как в ресурсах, или нет.

Итак, как сохранить обратную совместимость, так как более ранние версии требуют, чтобы эти трансляции были объявлены в манифесте.

Спасибо

1 Ответ

1 голос
/ 03 апреля 2019

Теперь, начиная с Oreo, приложения Android должны удалять все неявные трансляции для файла манифеста.

Вы можете зарегистрироваться для трансляций в манифесте.Вы просто не будете получать эти трансляции на Android 8.0 +.

Я не знаю, поддерживает ли Android объявление файла манифеста для каждой версии API, как в ресурсах, или нет

Не совсем.

Если по какой-то причине вы действительно не хотите иметь этот <intent-filter> в своем манифесте для Android 8.0+, я могу подумать о двух вариантах:

  1. Иметь отдельные варианты продукта для версий до Oreo и после Oreo, и иметь <intent-filter> в манифесте для набора источника, привязанного к вашей версии до Oreo.

  2. Есть два<receiver> элементы, указывающие на разные классы получателя, где один является простым подклассом другого.У одного из двух <receiver> элементов есть ваш <intent-filter>.Затем имейте файл res/values/bools.xml, который определяет логический ресурс (например, listenToMusic) как true, и файл res/values-v26/bools.xml, который определяет тот же ресурс как false<receiver> с <intent-filter> есть android:enabled="@bool/listenToMusic", так что конкретный приемник (и его <intent-filter>) будет отключен на Android 8.0 +.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...