android端获取设备上的所有安装软件,并进行跳转

我们都知道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

猜你喜欢

转载自blog.csdn.net/qq_35350654/article/details/82715342