0
public void invokeCamera() {
Intent mIntent = new Intent();
ComponentName comp = new ComponentName(
"com.android.camera",
"com.android.camera.Camera");
mIntent.setComponent(comp);
mIntent.setAction("android.intent.action.VIEW");
startActivity(mIntent);
}
ComponentName("","")中第一个参数是包名 ,第二个参数是启动程序 的类名 。
====================================
1 .使用自定义Action[recommended]
A程序中调用的代码为:
Intent intent = new Intent();
intent.setAction("com.test.action.PLAYER");
startActivity(intent);
B程序(被调用)中的AndroidManifest.xml中启动Activity的intent-filter:
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="com.test.action.PLAYER" />
<category android:name="android.intent.category.DEFAULT" /><!--必须,否则无效-->
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
2 .使用包类名
A程序中调用的代码为:
Intent intent = new Intent();
intent.setClassName("com.test", "com.test.Player");
startActivity(intent);
intent.setClassName(arg1,arg2)中的arg1是被调用程序B的包名,arg2是B程序中目的activity的完整类名。
又或者:
Intent intent = new Intent();
ComponentName comp = new ComponentName("com.test", "com.test.Player" );
intent.setComponent(comp);
startActivity(intent);
B程序(被调用)中的AndroidManifest.xml中启动Activity的intent-filter不需要特别加入其它信息,如下即可:
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>