Как добавить в manifest разрешение QUERY_ALL_PACKAGES

Рейтинг: 0Ответов: 2Опубликовано: 25.01.2023

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

Ответы

▲ 0

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

▲ 0

По какой-то не понятной причине разработчики Android Studio, решили в место жёлтого предупреждения установить красный в итоге это водит в заблуждение кажется что эта ошибка а это просто предупреждение которое можно проигнорировать

<manifest ...>
 <uses-permission
  android:name="android.permission.QUERY_ALL_PACKAGES"
  tools:ignore="QueryAllPackagesPermission"/>
 ...
</manifest>