我们都知道adb进去pm list package就可以查看安装应用的所有包名,那代码中遍历只要一下方法即可:
public class ApplicationUtil {
private static PackageManager pm;
static Context context;
private ApplicationUtil(Context context) {
ApplicationUtil.context = context;
pm = context.getPackageManager();
}
public static ApplicationUtil newInstance(Context context) {
return new ApplicationUtil(context);
}
/**
* 看这里,获取并按名称排序
**/
public List<Application> loadAllApplication() {
List<Application> apps = new ArrayList<Application>();
Intent main = new Intent(Intent.ACTION_MAIN, null);
main.addCategory(Intent.CATEGORY_LAUNCHER);
List<ResolveInfo> resolves = pm.queryIntentActivities(main, 0);
Collections.sort(resolves, new ResolveInfo.DisplayNameComparator(pm));
for (int i = 0; i < resolves.size(); i++) {
Application app = new Application();
ResolveInfo info = resolves.get(i);
String label = info.loadLabel(pm).toString().trim();
Drawable icon = info.activityInfo.loadIcon(pm);
String pkgName = info.activityInfo.applicationInfo.packageName;
String activityName = info.activityInfo.name;
Intent intent = new Intent();
intent.setClassName(pkgName, activityName);
app.setLabel(label);
app.setIcon(icon);
app.setClassName(activityName);
app.setPackageName(pkgName);
app.setIntent(intent);
app.setChecked(false);
apps.add(app);
System.out.println(label + "/" + pkgName + "/" + activityName);
}
return apps;
}
/**
*Application 跳转
**/
public void startApp(Application app) {
String pkgName = app.getPackageName();
Intent intent = pm.getLaunchIntentForPackage(pkgName);
if (intent != null) {
context.startActivity(intent);
}
}
/**
*包名直接跳转
**/
public void startApp(String pkgName) {
Intent intent = pm.getLaunchIntentForPackage(pkgName);
if (intent != null) {
context.startActivity(intent);
}
}
}
福利分享(直播、点播系统开发项目总结):https://blog.csdn.net/qq_35350654/article/details/82711371