如何获取已安装的android应用程序列表并选择一个运行
本周早些时候我提出了一个类似的问题,但我仍然不知道如何获得所有安装的应用程序的列表,然后选择一个来运行。
我试过了:
Intent intent = new Intent(ACTION_MAIN);
intent.addCategory(CATEGORY_LAUNCHER);
并且这仅显示预安装的应用程序或可以运行ACTION_MAIN意图类型的应用程序。
我也知道我可以使用PackageManager来获取所有已安装的应用程序,但是如何使用它来运行特定的应用程序?
以下是获取安装在Android上的活动/应用程序列表的代码:
Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
List<ResolveInfo> pkgAppsList = context.getPackageManager().queryIntentActivities( mainIntent, 0);
您将获得ResolveInfo
中的所有必要数据以启动应用程序。 你可以在这里检查ResolveInfo
javadoc。
这是使用packageManager的更简洁的方法
final PackageManager pm = getPackageManager();
//get a list of installed apps.
List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);
for (ApplicationInfo packageInfo : packages) {
Log.d(TAG, "Installed package :" + packageInfo.packageName);
Log.d(TAG, "Source dir : " + packageInfo.sourceDir);
Log.d(TAG, "Launch Activity :" + pm.getLaunchIntentForPackage(packageInfo.packageName));
}
// the getLaunchIntentForPackage returns an intent that you can use with startActivity()
更多信息在这里http://qtcstation.com/2011/02/how-to-launch-another-app-from-your-app/
另一种过滤系统应用程序的方法(适用于上述示例):
/**
* Return whether the given PackgeInfo represents a system package or not.
* User-installed packages (Market or otherwise) should not be denoted as
* system packages.
*
* @param pkgInfo
* @return
*/
private boolean isSystemPackage(PackageInfo pkgInfo) {
return ((pkgInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) ? true
: false;
}
链接地址: http://www.djcxy.com/p/24601.html
上一篇: How to get a list of installed android applications and pick one to run