1 问题
Q:我曾试过
Intent intent = new Intent(ACTION_MAIN);
intent.addCategory(CATEGORY_LAUNCHER);
但这个是展示预装的应用或者是可以以ACTION_MAIN
Intent类型运行的应用。
我也知道我可以使用PackageManager去获得所有安装的用用,但应该怎么去运行一个指定的应用呢?
2 回答1
下面的代码可以获取所有安装的应用
final Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
final List pkgAppsList = context.getPackageManager().queryIntentActivities( mainIntent, 0);
你会在ResolveInfo 中得到所有所需的数据去开启一个应用。
3 回答2
使用packageManager
final PackageManager pm = getPackageManager();
//获取所有安装的应用
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));
}
// getLaunchIntentForPackage 返回一个intent,你可以使用startActivity()