[Android] Android 11 대응 - 1. 패키지 공개 상태

변경사항 확인해보는 방법

Android Developer

문제가 될만 한 호출 메소드

  • 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 태그를 사용하기 위한 준비작업이다.

Android developer

좌측과 같은 버전을 사용하고 있다면 우측 이상에 해당하는 버전이 맞는지 확인해야 한다.

queries 태그 사용

이제 의존성을 가진 모든 앱의 패키지 정의를 queries 태그에 추가 적용한다.

Android11에서는 기본적으로 자신의 앱이 아닌, 다른 패키지를 찾거나 다른 패키지의 액티비티를 실행할 수 없다. 따라서 자신의 앱 동작에 의존적인 패키지가 있다면 AndroidManifest에 <queries> 태그로 필요한 패키지를 정의해야 한다.

다시 말해, 자신의 앱에서 다른 앱을 찾거나(탐색), 다른 앱을 실행하는 동작이 필요할 경우 그 앱의 패키지를 미리 자신의 앱에 정의해두어야 한다.

1
2
3
4
5
6
7
8
9
10
11
12
<!-- manifest 태그에 package 속성을 정의하는 것은 optional -->
<manifest package="com.example.game">
<queries>
<package android:name="com.example.store" />
<package android:name="com.example.services" />
<intent>
<action android:name="android.intent.action.SEND" />
<data android:mimeType="text/plain" />
</intent>
</queries>
...
</manifest>

[Android] Android 11 대응 - 1. 패키지 공개 상태

https://dl137584.github.io/2022/02/14/016-android11-package/

Author

LEEJS

Posted on

2022-02-14

Updated on

2022-02-17

Licensed under

댓글