方法一:前提是知道待打开应用的包名与类名
private void openOtherApp1() { ComponentName apk2Component1 = new ComponentName("com.xxx","com.xxx.activity.xxxActivity"); Intent mIntent = new Intent(); mIntent.addCategory(Intent.CATEGORY_LAUNCHER); mIntent.setComponent(apk2Component1); startActivity(mIntent); }
如果你要的启动的其他应用的Activity(此处的类名)不是该应用的入口Activity,那么在清单文件中,该Activity节点一定要加上android:exported=true,表示允许其他应用打开。否则会报错“java.lang.SecurityException: Permission Denial.....”。若是入口activity则不需要加。
若不知道类名,则用方法二
方法二:前提只需知道包名,若不知道包名可以下载一个AndroidRocket小火箭软件查看
private void openOtherApp() { String packageName = "com.inpor.xxx"; PackageInfo pi = null; try{ pi = getPackageManager().getPackageInfo(packageName, 0); Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null); resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER); resolveIntent.setPackage(pi.packageName); List<ResolveInfo> apps = getPackageManager().queryIntentActivities(resolveIntent, 0); ResolveInfo ri = apps.iterator().next(); if (ri != null ) { packageName = ri.activityInfo.packageName; String className = ri.activityInfo.name; Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_LAUNCHER); ComponentName cn = new ComponentName(packageName, className); intent.setComponent(cn); startActivity(intent); } }catch (Exception e){} }