1)adb shell启动
启动Camera:
am start -n com.android.camera/.Camera
2)intent+AndroidManifest.xml启动
Apk1中启动Apk2:
Apk1 Activity:
Intent intent= new Intent("chroya.foo");
startActivity(intent);
Apk2 AndroidManifest.xml:
<
activity
android:name
=".Pay_Activity"
>
<intent-filter>
<action android:name="chroya.foo"/><category android:name="android.intent.category.DEFAULT"/>
</intent-filter> </activity>
3)componetName启动
ComponentName componetName = new ComponentName(
//这个是另外一个应用程序的包名
"com.hooy.apk2",
//这个参数是要启动的Activity
"com.hooy.apk2.Pay_Activity");
Intent intent= new Intent();
intent.setComponent(componetName);
startActivity(intent);
4)ResolveInfo类启动(只知道包名,不知道类名)
实现代码:
private void openApp(Context context, String packageName) { final PackageManager packageManager = context.getPackageManager(); try { PackageInfo pi = packageManager.getPackageInfo(packageName, 0); Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null); resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER); resolveIntent.setPackage(pi.packageName); List<ResolveInfo> apps = packageManager.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 (NameNotFoundException e) { e.printStackTrace(); } }