用显式意图在一个App的Activity中启动另一个App的Activity
一、Intent
String pak = "/*目标包名*/";
String act = "/*完整路径*/";
Intent intent = new Intent();
intent.setComponent(new ConponentName(pak, act));
startActvity(intent);
注意: 包名和Activity的路径必须完整
/*
* example
*
* 启动com.example.test包中的ActivityA
*/
Intent intent = new Intent();
ComnentName componentName = new ComponentName("com.example.test","com.example.test.ActivityA");
intent.setComponent(componentName);
startActivity(intent);
二、AndroidManifest.xml
在被启动的Activity的配置中加入android.intent.action.MAIN
<activity
android:name=".ActivityB"
android:label="ActivityB" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</intent-filter>
</activity>
三、异常整理
java.lang.SecurityException: Permission Denial: starting Intent
被启动的Activity没有在intent-filter中加入android.intent.action.MAIN这个action属性。
android.content.ActivityNotFoundException: Unable to find explicit activity class
Intent中的包名和路径不完整,也可能不小心打错了。