//查询Android系统的所有具备ACTION_MAIN和CATEGORY_LAUNCHER的Intent的应用程序
PackageManager packageManager = getPackageManager();
final Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
// 本地的所有应用
final List<ResolveInfo> localApp = packageManager
.queryIntentActivities(mainIntent, 0);
android: 获取非系统app final List<PackageInfo> packageInfos = packageManager .getInstalledPackages(0); List<PackageInfo> local_pkgInfoNoSys = new ArrayList<PackageInfo>(); for (int i = 0; i < packageInfos.size(); i++) { PackageInfo packageInfo = packageInfos.get(i); // 获取 非系统的应用 if ((packageInfo.applicationInfo.flags & packageInfo.applicationInfo.FLAG_SYSTEM) <= 0) { local_pkgInfoNoSys.add(packageInfo); } // 本来是系统程序,被用户手动更新后,该系统程序也成为第三方应用程序了 else if ((packageInfo.applicationInfo.flags & packageInfo.applicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0) { local_pkgInfoNoSys.add(packageInfo); } }
打开app应用
方法一// 方法一 只能打开 xml中 有 android.intent.category.LAUNCHER 的应用 Intent mainIntent = getPackageManager().getLaunchIntentForPackage(packageName); startActivity(mainIntent);
打开app的应用 方法二Intent mIntent = new Intent(); ComponentName comp = new ComponentName( appIconInfo.getPackageInfo().packageName, "com.example.gamehall.AppActivity"); mIntent.setComponent(comp); mIntent.setAction("android.intent.action.VIEW"); startActivity(mIntent);