ComponentName,顾名思义,就是组件名称,通过调用Intent中的setComponent方法,我们可以打开另外一个应用中的Activity或者服务。

实例化一个ComponentName需要两个参数,第一个参数是要启动应用的包名称,这个包名称是指清单文件中列出的应用的包名称:

第二个参数是你要启动的Activity或者Service的全称(包名+类名),代码如下:
启动一个Activity:
Intent intent = new Intent();
intent.setComponent(new ComponentName(com.example.otherapp,
com.example.otherapp.MainActivity2));
startActivity(intent);
启动一个Service:
Intent it = new Intent();
it.setComponent(new ComponentName(com.example.otherapp,
com.example.otherapp.MyService));
startService(it);
注意
如果你要的启动的其他应用的Activity不是该应用的入口Activity,那么在清单文件中,该Activity节点一定要加上android:exported=true,表示允许其他应用打开,对于所有的Service,如果想从其他应用打开,也都要加上这个属性:
对于除了入口Activity之外的其他组件,如果不加这个属性,都会抛出“java.lang.SecurityException: Permission Denial.....”异常
那么为什么入口Activity不用添加这个属性就可以被其他应用启动呢?我们来看一段入口Activity的注册代码:
入口Activity和普通Activity唯一不同的地方就是入口Activity多了一个过滤器,对于包含了过滤器的组件,意味着该组件可以提供给外部的其他应用来使用,它的exported属性默认为true,相反,如果一个组件不包含任何过滤器,那么意味着该组件只能通过指定明确的类名来调用,也就是说该组件只能在应用程序的内部使用,在这种情况下,exported属性的默认值是false。
Intent advIntent = new Intent();
ComponentName advIn = new ComponentName(ctx,"kds.szkingdom.commons.android.tougu.TouguShowH5Activity");
advIntent.setComponent(advIn);
Bundle bundle = new Bundle();
bundle.putString("key_h5url", advLink2);
advIntent.putExtras(bundle);
ctx.startActivity(advIntent);

最新文章

  1. NOT IN 和NOT EXISTS
  2. IO-02. 整数四则运算(10)
  3. 360demo--关于WM_GETMINMAXINFO
  4. hdu 4738 2013杭州赛区网络赛 桥+重边+连通判断 ***
  5. 基于51单片机+DAC0832的信号发生器
  6. 转:C的|、||、&、&&、异或、~、!运算
  7. centos 7 下modelsim10.2c安装教程
  8. nyoj 119 士兵杀敌(三)【线段树区间最大值最小值差】
  9. vijosP1603迷宫
  10. php 面试
  11. C/C++中的switch使用
  12. spring源码
  13. ThreadLocal的一些总结
  14. PAT甲级1049 Counting Ones【规律】
  15. OpenGL创建一个三角形,并且颜色渐变(绿—>黑—>绿)
  16. Fiddler功能介绍之Web抓包、远程抓包教程【转载】
  17. Mybatis的JDBC提交设置/关闭mysql自动提交------关于mysql自动提交引发的惨剧
  18. 树莓派3 之 pi3Robot 控制系统配置
  19. 函数调用的方法一共有 4 种,call,apply,bind
  20. 前端安全之CSRF

热门文章

  1. POJ 1703 带权并查集
  2. Segment公司--整合数据进行分析
  3. JavaScript是按引用传递or值传递?
  4. Swift 中实现 Promise 模式
  5. ZBrush快捷键与鼠标操作
  6. win7/win10 未分配磁盘怎样创建扩展分区 也就是逻辑分区(转截)
  7. xshell登录centos7很慢解决办法
  8. ZJOI2015 幻想乡战略游戏 动态点分治_树链剖分_未调完
  9. centos7部署openvasV9
  10. 小白学习Spark系列一:Spark简介