使用ComponentName
使用的代码如下
例如我们要启动B程序的MainActivity
如果启动的Activity不是MainActivity,那么我们要保证此Activity是export的。
否则会报异常java.lang.SecurityException: Permission Denial: starting Intent
而要实现Activity为export有两个办法:
在AndroidManifest中声明此Activity为export
1<activity android:name="com.example.b.TestActivity" android:exported="true"></activity>在AndroidManifest中为此Activity添加intent-filter,类似默认的MainActivity一样
12345678910111213<intent-filter><action name="com.example.b.start"></action></intent-filter>```## 使用Action第二种启动方式就是直接使用Action,这种方法就比较简单了。在B程序的Activity中加入action```xml<intent-filter><action name="com.example.b.start"></action></intent-filter>
然后在A程序中
以新的task启动程序
在启动外部程序的时候,同样也是可以设置启动的flag的
例如添加FLAG_ACTIVITY_NEW_TASK标识
添加这个标识,区别在于被启动的程序(DemoB)与发起启动的程序(DemoA)是否在同一个task里。
表现出来的区别就是当启动外部程序后,按home键退出到桌面,重新打开DemoA程序,
如果带有FLAG_ACTIVITY_NEW_TASK标识,则进入的是DemoA之前的界面
而如果没有带FLAG_ACTIVITY_NEW_TASK标识,则会进入到DemoB的界面当中.
本文作者:JeremyHe 本文链接:https://alzz.me/posts/2014/07/24/02_Android程序如何启动另一个程序/ 版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!