private void startAppWithPackageName(String packagename) { PackageInfo packageinfo = null; ResolveInfo resolveinfo; try { packageinfo = getPackageManager().getPackageInfo(packagename, 0); } catch (PackageManager.NameNotFoundException e) { Toast.makeText(MainActivity.this, "Input packageName is error, please check it!", Toast.LENGTH_SHORT).show(); e.printStackTrace(); } if (packageinfo == null) { Toast.makeText(MainActivity.this, "packageinfo is null!", Toast.LENGTH_SHORT).show(); return; } Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null); resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER); resolveIntent.setPackage(packageinfo.packageName); List<ResolveInfo> resolveInfoList = getPackageManager().queryIntentActivities(resolveIntent, 0); try { resolveinfo = resolveInfoList.iterator().next(); } catch (NoSuchElementException e) { Toast.makeText(MainActivity.this, "Input packageName is system thread, please input foreground app's packageName!", Toast.LENGTH_SHORT).show(); e.printStackTrace(); return; } if (resolveinfo != null) { String packageName = resolveinfo.activityInfo.packageName; String className = resolveinfo.activityInfo.name; Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_LAUNCHER); ComponentName componentName = new ComponentName(packageName, className); intent.setComponent(componentName); startActivity(intent); } }
只知道某应用的包名,也能够启动相应的应用App
最新推荐文章于 2025-09-16 00:34:35 发布
本文介绍了一种通过指定包名启动Android应用的方法。利用Intent和PackageManager等API,该方法能够查询并启动用户指定的应用程序。
1661

被折叠的 条评论
为什么被折叠?



