Как протестировать видимость пакета

Если для работы вашего приложения требуется взаимодействие с другими приложениями, рекомендуем проверить, как на него влияют изменения в видимости пакетов в Android 11 (уровень API 30) и более поздних версиях.

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

Протестируйте изменения в поведении

Чтобы проверить, влияет ли это изменение на ваше приложение, выполните следующие действия:

  1. Установите Android Studio 3.6.1 или более поздней версии.
  2. Установите последнюю версию Gradle, которую поддерживает Android Studio.
  3. Установите для параметра targetSdkVersion значение 30 или выше.
  4. Не добавляйте элемент <queries> в файл манифеста приложения.
  5. Вызовите метод getInstalledApplications() или getInstalledPackages(). Оба метода возвращают отфильтрованный список, если они выполнены успешно.
  6. Узнайте, какие функции приложения не работают.
  7. Чтобы исправить эти функции, добавьте соответствующие записи <queries>.

Как настроить сообщения в журнале для фильтрации пакетов

Чтобы узнать больше о том, как видимость приложений по умолчанию влияет на ваше приложение, вы можете включить сообщения в журнале для фильтрации пакетов. Если вы разрабатываете тестовое или отладочное приложение в Android Studio, то можете использовать системный журнал. В противном случае вы можете выполнить следующую команду в окне терминала, чтобы включить его вручную:

adb shell pm log-visibility --enable PACKAGE_NAME

После этого каждый раз, когда пакеты будут отфильтровываться из возвращаемых значений объекта PackageManager, в Logcat будет появляться сообщение, похожее на следующее:

I/AppsFilter: interaction: PackageSetting{7654321 \
  com.example.myapp/12345} -> PackageSetting{...} BLOCKED