public static List<PackageInfo> getInstalledPackages(Context context, int flags) { final PackageManager pm = context.getPackageManager(); try { return pm.getInstalledPackages(flags); } catch (Exception ignored) { //we don't care why it didn't succeed. We'll do it using an alternative way instead } // use fallback: Process process; List<PackageInfo> result = new ArrayList<>(); BufferedReader bufferedReader = null; try { process = Runtime.getRuntime().exec("pm list packages"); bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream())); String line; while ((line = bufferedReader.readLine()) != null) { final String packageName = line.substring(line.indexOf(':') + 1); final PackageInfo packageInfo = pm.getPackageInfo(packageName, flags); result.add(packageInfo); } process.waitFor(); } catch (Exception e) { e.printStackTrace(); } finally { if (bufferedReader != null) try { bufferedReader.close(); } catch (IOException e) { e.printStackTrace(); } } return result; } |
PackageManager pm = getPackageManager(); // 설치되어있는 모든 목록의 앱리스트를 가져온다. List<PackageInfo> packages = pm.getInstalledPackages(PackageManager.GET_META_DATA); for (PackageInfo packageInfo : packages) { ApplicationInfo applicationInfo = packageInfo.applicationInfo; int versionCode = packageInfo.versionCode; // 버전코드 String versionName = packageInfo.versionName; // 버전이름 int flags = packageInfo.applicationInfo.flags; // => 해당앱에 어떤flags값이 있는지 판단하여 쓰면됨.
// 만약에 Application 목록에 액티비티에 어떤 filter 값이 있는지 판단할려면? // 쿼리를 날려 모든 앱들의 액티비티에 intent-filter 설정에 따라 Activity 목록들을 가져온다. final Intent intent = new Intent(Intent.ACTION_MAIN, null); intent.addCategory(Intent.CATEGORY_LAUNCHER); final List<ResolveInfo> pkgAppsList = getPackageManager().queryIntentActivities(intent, 0);// 해당 액티비티에 어떤 값이있는지 query를 날려준다. for (ResolveInfo resolveInfo : pkgAppsList) {
} } |
ApplicationInfo 로 아래와 같이 판정 가능합니다. ApplicationInfo 는 패키지명으로 구할수 있습니다.
if ((ai.flags & ApplicationInfo.FLAG_SYSTEM) != 0) { if((ai.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0) { // 마켓에서 업데이트 된 시스템 어플 } else { // 시스템 어플 } } else { // 서드파티 어플 } |
'IT_Programming > Android_Java' 카테고리의 다른 글
[펌] windowTranslucentStatus 설정 후 adjustResize 안될 때 / Android FullScreen + AdjustResize (0) | 2015.08.07 |
---|---|
[펌] Play Store 앱 등록시 Multiple APK 지원 (0) | 2015.08.06 |
[펌] 안드로이드 문자열에 개수(단/복수)를 제대로 보여주자. (0) | 2015.07.31 |
[펌] 안드로이드 디자인 서포트 라이브러리 (0) | 2015.07.19 |
[펌] 모든 디바이스를 위한 머티리얼 디자인 - AppCompat 라이브러리 (0) | 2015.07.19 |