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
最新推荐文章于 2021-02-14 20:06:28 发布