一、在清单文件中添加权限,否则只能获取到手机自带的应用信息
<uses-permission
android:name="android.permission.QUERY_ALL_PACKAGES"
tools:ignore="QueryAllPackagesPermission" />
二、获取手机安装的应用名、包名、类名方法
private List<ResolveInfo> getResolveInfos(){
List<ResolveInfo> appList = null;
Intent intent = new Intent(Intent.ACTION_MAIN, null);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
PackageManager pm = getPackageManager();
appList = pm.queryIntentActivities(intent, 0);
Collections.sort(appList, new ResolveInfo.DisplayNameComparator(pm));
return appList;
}
private void plintPkgAndCls(List<ResolveInfo> resolveInfos){
PackageManager packageManager = getPackageManager();
Log.i("start", "************************************************");
for (int i = 0; i < resolveInfos.size(); i++) {
// 包名
String pkg = resolveInfos.get(i).activityInfo.packageName;
// 包名+类名(全路径)
String cls = resolveInfos.get(i).activityInfo.name;
// 应用名
String title = null;
try {
ApplicationInfo applicationInfo = packageManager.getPackageInfo(pkg, i).applicationInfo;
title = applicationInfo.loadLabel(packageManager).toString();
}catch (Exception e){
}
Log.i("info", title + ":" + pkg + "----" + cls);
}
Log.i("end", "************************************************");
}
三、调⽤函数打印应用名、包名、类名
plintPkgAndCls(getResolveInfos());
四、调用第三方app
Intent intent = new Intent();
//包名 包名+类名(全路径)
intent.setClassName("com.tencent.wemeet.app", "com.tencent.wemeet.app.StartupActivity");
startActivity(intent);