반응형

Android 11 버전부터 바뀐점이 확인됨....

 

바로 폰에 설치되어 있는 다른 앱들의 패키지 정보를 가져오는 기능이 문제...

 

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();
}

그러면 해당 코드를 이용하여 해당 패키지의 기본 아이콘 및 앱 이름을 가져올 수 있습니다.

 

이걸로 또 문제가 발생했지만 뭐... 해결방법은 찾았으니 모두들 즐코딩하세요 ㅎㅎ 이만

반응형

+ Recent posts