Тестирование поведения видимости пакета

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