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