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