Android 通过 包名启动Activity


最近因为项目需要,不让app在应用列表显示,只能用自己的启动器启动。基本搞定,效果实现了,不过与我的计划相差挺远的。

  1. private void RunApp(String packageName) {  
  2.         PackageInfo pi;  
  3.         try {  
  4.             pi = getPackageManager().getPackageInfo(packageName, 0);  
  5.             Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);  
  6.             // resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);   
  7.             resolveIntent.setPackage(pi.packageName);  
  8.             PackageManager pManager = getPackageManager();  
  9.             List<ResolveInfo> apps = pManager.queryIntentActivities(  
  10.                     resolveIntent, 0);  
  11.   
  12.             ResolveInfo ri = apps.iterator().next();  
  13.             if (ri != null) {  
  14.                 packageName = ri.activityInfo.packageName;  
  15.                 String className = ri.activityInfo.name;  
  16.   
  17.                 Intent intent = new Intent(Intent.ACTION_MAIN);  
  18.                 // intent.addCategory(Intent.CATEGORY_LAUNCHER);   
  19.   
  20.                 ComponentName cn = new ComponentName(packageName, className);  
  21.   
  22.                 intent.setComponent(cn);  
  23.                 startActivity(intent);  
  24.             }  
  25.         } catch (NameNotFoundException e) {  
  26.             // TODO Auto-generated catch block   
  27.             e.printStackTrace();  
  28.         }  
  29.   
  30.     }  

网上都有,不说了,目前只有这个能实现我的解决方案。其余的几种方法网上都有,不多说了。

相关内容