
Android
Javaprivate void doStartApplicationWithClassName(String className) {// 获取目标应用程序的详细信息,包括Activities、services、versioncode、name等PackageManager packageManager = getPackageManager();PackageInfo packageInfo = null;try { packageInfo = packageManager.getPackageInfo(className, 0);} catch (NameNotFoundException e) { e.printStackTrace();}if (packageInfo == null) { return;}// 创建一个类别为CATEGORY_LAUNCHER的该包名的IntentIntent resolveIntent = new Intent(Intent.ACTION_MAIN, null);resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);resolveIntent.setPackage(packageInfo.packageName);// 通过queryIntentActivities方法遍历该应用程序中所有可启动的ActivityList resolveInfoList = getPackageManager().queryIntentActivities(resolveIntent, 0);for (ResolveInfo resolveInfo : resolveInfoList) { // 匹配到需要启动的Activity if (resolveInfo != null && !resolveInfo.activityInfo.name.equals("")) { // 进一步设置LAUNCHER Intent Intent launchIntent = new Intent(Intent.ACTION_MAIN, null); launchIntent.addCategory(Intent.CATEGORY_LAUNCHER); launchIntent.setPackage(packageInfo.packageName); // 设置Activity名称和路径参数 ComponentName cn = new ComponentName(packageName, className); launchIntent.setcomponent(cn); // 启动该应用程序的LAUNCHER Activity startActivityForResult(launchIntent, REQUEST_CODE);}}在这个示例方法中,我们首先通过getPackageManager()获取目标应用程序的详细信息,并使用queryIntentActivities方法遍历该应用程序中所有可启动的Activity。然后,在循环中根据需要匹配到并设置一个LAUNCHER Intent,并通过发起一个新的请求来启动该应用程序的LAUNCHER Activity。注意,在调用请求时,我们还必须设置一个REQUEST_CODE来记录请求结果。Copyright © 2025 IZhiDa.com All Rights Reserved.
知答 版权所有 粤ICP备2023042255号