본문 바로가기
프로그래밍/Android

설치된 앱 목록 조회(PackageManager)

by Mr-후 2018. 10. 31.
반응형


설치된 앱 목록 조회(PackageManager)




PackageManaager는 앱이 스마트폰에 설치된 정보를 구하는 목적으로 사용되는 시스템 서비스. 주로 스마트폰에 설치된 앱 목록, 인텐트에 반응할 컴포넌트 정보 등을 구하는 목적으로 사용. 


설치된 앱 목록 

사용자의 스마트폰에 특정 앱이 설치되어 있는지 판단해야할 때, 설치되어 있지 않았을 때 스토어 화면으로 전환하거나 할 때 사용할 수 있다. 


Packagemanager manager = getPackageManager(); 
List<ApplicationInfo> list = manager.getInstalledApplications(PackageManager.GET_META_DATA); 

for (ApplicationInfo info : list) {
    String label = info.loadLabel(manager).toString();
    String packageName = info.packageName;
}


인텐트에 반응할 액티비티가 있는지도 미리 체크가 가능하며 역시 PackageManager에서 제공한다. 


Packagemanager manager = getPackageManager(); 
List<ResolveInfo> activities = manager.queryIntentActivities(new Intent(Intent.ACTION_PICK), 0); 

for (ResolveInfo into : activities) {
    String name = info.loadLabel(manager).toString();
    String packageName = info.activityInfo.applicationInfo.packageName;
}

실행하려는 인텐트 객제를 하나 만들고 이 객체를 queryIntentActivities() 함수의 매개변수로 설정하면 인텐트로 실행될 컴포넌트 정보를 ResolveInfo타입으로 넘겨준다. ResolveInfo객체를 이용해서 인텐트에 반응할 앱의 이름, 패키지명 등을 구할 수 있다. 

/**
* APP 설치체크
*/
@SuppressWarnings("SameParameterValue")
private boolean installCheck(String searchApp) {
if (getActivity() == null) {
return false;
}

try {
PackageManager pm = getActivity().getPackageManager();
if ("ISP".equals(searchApp)) {
pm.getPackageInfo("com.android.bbb", PackageManager.GET_META_DATA);
} else if ("KFTC".equals(searchApp)) {
pm.getPackageInfo("com.android.aaa", PackageManager.GET_META_DATA);
}
} catch (Exception e) {
return false;
}
return true;
}

반응형