Если ваше приложение использует взаимодействие с другими приложениями для выполнения своих задач, полезно протестировать, как изменения видимости пакетов в Android 11 (уровень API 30) и выше влияют на ваше приложение.
В этом руководстве также приводятся некоторые рекомендации по тестированию изменений в поведении и предлагаются способы настройки сообщений журнала для более детального определения того, как это может повлиять на ваше приложение.
Проверьте изменения в поведении.
Чтобы проверить, повлияет ли это изменение поведения на ваше приложение, выполните следующие шаги:
- Установите Android Studio версии 3.6.1 или выше.
- Установите последнюю версию Gradle, поддерживаемую Android Studio.
- Установите для
targetSdkVersionвашего приложения значение30или выше. - Не включайте элемент
<queries>в файл манифеста вашего приложения. - Вызовите
getInstalledApplications()илиgetInstalledPackages(). Оба метода в случае успеха возвращают отфильтрованный список. - Проверьте, какие функции вашего приложения не работают.
- Добавьте соответствующие записи
<queries>для исправления этих проблем.
Настройте сообщения журнала для фильтрации пакетов.
Чтобы узнать больше о том, как видимость приложений по умолчанию влияет на ваше приложение, вы можете включить сообщения журнала для фильтрации пакетов. Если вы разрабатываете тестовое или отлаживаемое приложение в Android Studio, системный журнал предоставляет вам эту возможность . В противном случае вы можете выполнить следующую команду в окне терминала, чтобы включить ее вручную:
adb shell pm log-visibility --enable PACKAGE_NAME
Затем, всякий раз, когда пакеты исключаются из возвращаемых значений объекта PackageManager , в Logcat появляется сообщение, подобное следующему:
I/AppsFilter: interaction: PackageSetting{7654321 \
com.example.myapp/12345} -> PackageSetting{...} BLOCKED