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);

转载于:https://www.cnblogs.com/yaowen/p/5470312.html

ComponentName相关推荐

  1. android componentname activity,ComponentName的使用

    ComponentName是安卓提供给我们的通过A应用启动B应用的一个类,与Intent同位于Android.content包下,这个类主要用来定义可见一个应用程序组件,例如:Activity,Ser ...

  2. Intent七在属性之一:ComponentName

    注:在<疯狂android讲义>中,此属性称为Component,官方文档中称为ComponentName. 1.The name of the component that should ...

  3. android 启动第三方程序的代码(利用ComponentName)

    转自:http://blog.csdn.net/vrix/article/details/6851557  在Intent中可以直接使用Intent.setClass() 也可以使用组件Compone ...

  4. Androd开发之通过ComponentName和setComponent以及scheme打开外部应用 | 打开任意页面 | 打开指定页面

    咱们老套路先看下效果图: 如果公司给你这个需求,让你们公司APP打开第三方APP进行别的操作,类似微信支付,你的APP打开微信的支付页面这个需求.咱们就可以用今天的ComponentName来实现这个 ...

  5. ComponentName的意思

    ComponentName是用来打开其它应用程序中的Activity或服务的. 使用方法: Intent i=new Intent(); i.setComponent(new ComponentNam ...

  6. ComponentName知识

    以下是ComponentName的API /*** Create a new component identifier from a Context and Class object.* * @par ...

  7. Android中关于ComponentName的使用

    Android中Intent对象提供许多属性: ComponentName Action Flags Extras Catgory Data 其中,ComponentName可以启动Activity. ...

  8. 关于使用ComponentName连接俩个Activity运行闪退的问题

    报错:运行后闪退 报错原因:查看ComponentName的传参错误,第一个参数传入的是启动应用的包名称,必须是全包名,第二个传入的参数是包名 + 类名 解决方法:本人包名没有写全,修改参数中的包名后 ...

  9. Android ComponentName的使用

    ComponentName顾名思义是组件的名称,可以启动其他应用的Activity.Service. ComponentName chatActivity =new ComponentName(par ...

最新文章

  1. httpsrequest java_java 发送http和https请求的实例
  2. ubuntu MySQL安装指南
  3. mysql 密码长度约束_MySQL简单操作【1、在cmd下MySQL的运行及简单增删改查】
  4. 今天看到一篇小册子上的话
  5. 6-4 开班简介1
  6. 一些机器学习算法总结
  7. ASP.NET MVC 4 笔记
  8. Codeforces Round 1384
  9. 公共DNS递归服务器(转发)
  10. 解决Go服务GC时间过长
  11. 关于CRC校验的一些总结
  12. jAVA EE NZ2001 java EE学习总结 第七周(包含思维导图) 主要内容I/O框架、网络编程、反射
  13. V2X和D2D的链路级sidelink上的区别
  14. kali启动时出现resuming from hibernation错误
  15. 抖音神曲《一百万个可能》:“在一瞬间,我们有一百万个可能”
  16. PHP使用支付宝SDK完成支付
  17. 【LiteOS】HUAWEI LiteOS 详解
  18. 服务器能进系统滴滴响,主机报警连续响个不停
  19. R之方差分析与秩和Kruskal-Wallis
  20. Html+Vue实现五子棋游戏(单机版)

热门文章

  1. QQ消息支持HTML吗,WebQQ全面升级支持IE9 HTML5无处不在
  2. 车辆行人检测数据集_澎思科技行人再识别技术取得突破,刷新三大数据集世界记录...
  3. 95-30-018-Channel-AbstractNioByteChannel
  4. 【SpringCloud】Spring Cloud Config 配置中心
  5. 【Elasticsearch】ES写入满排查思路-内存溢出
  6. 【Elasticsearch】es 报错 index has not yet rolled over with that alias
  7. 【clickhouse】clickhouse 漫谈SIMD、SSE指令集与ClickHouse向量化执行
  8. Flink :刷屏 forceKillApplication over null,Retrying immediately The Client is Stopped
  9. Rabbitmq的三种方式
  10. android 全局 窗口,学习笔记:WindowManager显示Android全局悬浮窗口