Как добавить в manifest разрешение QUERY_ALL_PACKAGES
В документации говориться добавить разрешение в манифест, чтобы получить все установленные приложения на устройстве начиная с Android 11 и выше, я добавил но подчеркивает красным и пишет
A declaration should generally be used instead of QUERY_ALL_PACKAGES; see https://g.co/dev/packagevisibility for details
Что я делаю не так ?
<manifest>
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
</manifest>
Ответы (2 шт):
Android 11 и выше используют новую систему разрешений, которая называется "Declarations". Вместо разрешения QUERY_ALL_PACKAGES надо использовать объявление packageVisibility.
<manifest>
<queries>
<package android:name="com.example.mypackage"
android:visibility="permission"
android:protectionLevel="normal"
android:requestedPermission="android.permission.QUERY_ALL_PACKAGES" />
</queries>
</manifest>
На месте com.example.mypackage укажите имя вашего пакета.
После этого, нужно запросить разрешение packageVisibility у пользователя при запуске приложения, с помощью метода requestPermissions().
Дополнительная информации и примеров можно посмотреть по этой ссылке https://developer.android.com/training/permissions/package-visibility
По какой-то не понятной причине разработчики Android Studio, решили в место жёлтого предупреждения установить красный в итоге это водит в заблуждение кажется что эта ошибка а это просто предупреждение которое можно проигнорировать
<manifest ...>
<uses-permission
android:name="android.permission.QUERY_ALL_PACKAGES"
tools:ignore="QueryAllPackagesPermission"/>
...
</manifest>