설치된 앱 목록 조회(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;
}
'프로그래밍 > Android' 카테고리의 다른 글
ConnectivityManager 네트워크 접속 정보 얻기 (0) | 2018.11.02 |
---|---|
갤러리 앱 데이터 연동(ContentProvider) (0) | 2018.11.01 |
Android 최상위 액티비티 확인 방법 (0) | 2018.10.31 |
Failed to resolve: play-services-basement (0) | 2018.10.30 |
안드로이드 키보드 숨김/보임 처리 (0) | 2018.10.25 |