[Android] Android 11 대응 - 1. 패키지 공개 상태
변경사항 확인해보는 방법
문제가 될만 한 호출 메소드
packageManager.getInstalledApplications()
또는packageManager.getInstalledPackages()
packageManager.resolveActivity(intent, 0)
packageManager.queryIntentActivities(intent, flags)
packageManager.getPackageInfo("packageName", flags)
packageManager.getLaunchIntentForPackage(packageName)
방법 1. QUERY_ALL_PACKAGES
QUERY_ALL_PACKAGES 권한을 추가하면 모든 앱을 찾거나 실행할 수 있다. 이 퍼미션은 어떤 앱이든 받을 수 있는 Install permission이다.
1 | <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" /> |
방법 2. <queries> 태그
gradle version 확인하기
queries 태그를 사용하기 위한 준비작업이다.
좌측과 같은 버전을 사용하고 있다면 우측 이상에 해당하는 버전이 맞는지 확인해야 한다.
queries 태그 사용
이제 의존성을 가진 모든 앱의 패키지 정의를 queries 태그에 추가 적용한다.
Android11에서는 기본적으로 자신의 앱이 아닌, 다른 패키지를 찾거나 다른 패키지의 액티비티를 실행할 수 없다. 따라서 자신의 앱 동작에 의존적인 패키지가 있다면 AndroidManifest에 <queries> 태그로 필요한 패키지를 정의해야 한다.
다시 말해, 자신의 앱에서 다른 앱을 찾거나(탐색), 다른 앱을 실행하는 동작이 필요할 경우 그 앱의 패키지를 미리 자신의 앱에 정의해두어야 한다.
1 | <!-- manifest 태그에 package 속성을 정의하는 것은 optional --> |
[Android] Android 11 대응 - 1. 패키지 공개 상태
https://dl137584.github.io/2022/02/14/016-android11-package/