Package visibility on Android 11 by URI

Из своего приложения открываю Яндекс.Карты или Яндекс.Навигатор. Но прежде чем их открыть проверяю наличие этих приложений таким образом:

hasAppByUri("yandexmaps://")
hasAppByUri("yandexnavi://")

Но в Android 11 появились ограничения на видимость пакета. Как предоставить доступ к пакету по полному имени пакета показано, а через URI - не понятно как открыть доступ к сторонним приложениям Яндекса

Основной вопрос: как в Android 11 проверить наличие приложений в системе по URI и открыть их? Что нужно добавить в манифест, чтобы код работал как и в предыдущих версиях?


Ответы (1 шт):

Автор решения: Виталий Перятин

В Android 11 нельзя работать с пакетами, не указав намерения через манифест. Конкретно в этом случае необходимо прописать следующий код.

<queries>

    <intent>
        <action android:name="android.intent.action.VIEW" />
        <data android:scheme="yandexmaps" />
    </intent>

    <intent>
        <action android:name="android.intent.action.VIEW" />
        <data android:scheme="yandexnavi" />
    </intent>

</queries>

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

→ Ссылка