반응형
Android 11 버전부터 바뀐점이 확인됨....
![](https://t1.daumcdn.net/keditor/emoticon/friends1/large/011.gif)
바로 폰에 설치되어 있는 다른 앱들의 패키지 정보를 가져오는 기능이 문제...
List<ApplicationInfo> pack = context.getPackageManager().getInstalledApplications(PackageManager.GET_META_DATA);
해당 함수는 폰에 설치된 다른 패키지 정보를 가져오는 함수입니다.
그런데!!
타겟 Build 버전을 안드로이드 11 API30 으로 적용할 경우 시스템 어플 리스트 및 일부 앱만 출력 될 뿐
더이상 설치된 모든 앱 패키지 정보를 가져오지 못합니다.
안드로이드 10 버전까진 정상동작....
그럼 어떻게 변경이 되나....
일단 공식문서상 내용은 다음과 같습니다. [링크]
패키지 공개 상태 관리 | Android 개발자 | Android Developers
패키지 공개 상태 관리 앱을 만들 때는 기기에 설치된 다른 앱, 즉 내 앱에서 액세스하려는 앱을 표시하는 패키지 집합을 고려하는 것이 중요합니다. 앱이 Android 11(API 수준 30) 이상을 타겟팅한다
developer.android.com
간단하게 설명하자면 아에 불가능한게 아니라 특정 패키지명을 명시한다면 검색 할 수 있다는 내용입니다.
<manifest>
<queries>
<package android:name="패키지명1" />
<package android:name="패키지명2" />
</queries>
</manifest>
위 처럼 manifest 속성파일 내에 queries 값으로 검색할 패키지명을 명시해 주면 가능합니다.
SMALL
List<ApplicationInfo> pack = getPackageManager().getInstalledApplications(PackageManager.GET_META_DATA);
for(ApplicationInfo packageInfo : pack){
Drawable App_icon = getPackageManager().getApplicationIcon(packageInfo.packageName);
String App_name = getPackageManager().getApplicationLabel(context.getPackageManager().getApplicationInfo(packageInfo.packageName, PackageManager.GET_UNINSTALLED_PACKAGES)).toString();
}
그러면 해당 코드를 이용하여 해당 패키지의 기본 아이콘 및 앱 이름을 가져올 수 있습니다.
이걸로 또 문제가 발생했지만 뭐... 해결방법은 찾았으니 모두들 즐코딩하세요 ㅎㅎ 이만
반응형
'뉴스 & 이슈' 카테고리의 다른 글
Android 11 Build 타겟 적용 시 이슈 (0) | 2021.11.17 |
---|---|
안드로이드 12 출시 예정 ('21/10/04 예정, 스노우콘) (4) | 2021.09.15 |