#android #android-package-managers #android-11 #android-update-app
#Android #android-менеджеры пакетов #android-11 #android-обновление-приложение
Вопрос:
Эта строка описана на сайте разработчика, но я не совсем ее понял
Call getInstalledApplications() or getInstalledPackages(). Both methods should return a filtered list.
На самом деле, мне нужно протестировать Testing package visibility behavior
https://developer.android.com/training/package-visibility/testing
Ответ №1:
Существует 3 различных способа запроса установленных приложений пользователя в Android 11.
- Если вы уже знаете, какие приложения вы хотите запросить, просто укажите имена пакетов внутри
<queries>
элемента вAndroidManifest
.
<manifest package="com.nikit.app">
<queries>
<package android:name="com.fake.app" />
<package android:name="com.fake.game" />
</queries>
...
</manifest>
- Если вы не знаете всех имен пакетов приложений, которые
хотите запросить, но есть набор приложений с аналогичной функциональностью
, которые вы хотите запросить, вы можете использовать фильтр намерений внутри
<queries>
элемента в соответствии с вашими требованиями, как это было
сделано в приведенном ниже фрагменте кода.
<manifest package="com.nikit.app">
<queries>
<intent>
<action android:name="android.intent.action.SEND" />
<data android:mimeType="image/jpeg" />
</intent>
</queries>
...
</manifest>
<intent>
Элемент выглядит так <intent-filter>
, но есть несколько отличий. элемент имеет следующие ограничения:
<intent>
Элемент может иметь только один<action>
элемент.- Элемент может иметь только следующие атрибуты :
mimeType
,scheme
иhost
.
- Если вы хотите запросить все приложения пользователя, как вы делали ранее, вам необходимо включить
QUERY_ALL_PACKAGES
разрешение вAndroidManifest
. Этоnormal
разрешение, и оно предоставляется сразу после установки приложения.
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>
Комментарии:
1. СПАСИБО @shirley! но у меня есть сомнения в соответствии с сайтом разработчика QUERY_ALL_PACKAGES не рекомендуется ссылка , есть ли какие-либо побочные эффекты?
2. привет @ajay bisaveni, об этом, возможно, вы можете обратиться по этой ссылке
3. @shirley В 1-м подходе, о котором вы упомянули, что, если я захочу добавить более 20 имен пакетов? Есть ли лучший способ сделать это? например, wild card или что-то вроде
com.example.*