//查询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应用
方法一
[code="java"]
// 方法一 只能打开 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);