关于ComponentName的使用
来源:互联网 发布:重装系统后连不上网络 编辑:程序博客网 时间:2024/06/07 17:42
关于ComponentName的使用
标签: android开发componentNameactivityservice
2015-11-01 15:00 4303人阅读 评论(0)收藏举报
本文章已收录于:
分类:
作者同类文章X
作者同类文章X
版权声明:本文为sang原创文章,转载请注明出处。
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,如果想从其他应用打开,也都要加上这个属性:
- <service
- android:name="com.example.otherapp.MyService"
- android:exported="true" >
- </service>
- <activity
- android:name="com.example.otherapp.MainActivity2"
- android:exported="true" >
- </activity>
对于除了入口Activity之外的其他组件,如果不加这个属性,都会抛出“java.lang.SecurityException: Permission Denial.....”异常
那么为什么入口Activity不用添加这个属性就可以被其他应用启动呢?我们来看一段入口Activity的注册代码:
- <activity
- android:name=".MainActivity"
- android:label="@string/app_name" >
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
入口Activity和普通Activity唯一不同的地方就是入口Activity多了一个过滤器,对于包含了过滤器的组件,意味着该组件可以提供给外部的其他应用来使用,它的exported属性默认为true,相反,如果一个组件不包含任何过滤器,那么意味着该组件只能通过指定明确的类名来调用,也就是说该组件只能在应用程序的内部使用,在这种情况下,exported属性的默认值是false。
明白否?
有问题欢迎交流...
- 顶
- 4
- 踩
- 0
- 上一篇launchMode使用详解
- 下一篇使用DrawerLayout实现侧拉菜单
我的同类文章
http://blog.csdn.net
- •WmS简介(三)之Activity窗口是如何创建的?基于Android7.0源码2016-12-01
- •WmS详解(一)之token到底是什么?基于Android7.0源码2016-11-18
- •一网打尽OkHttp中的缓存问题2016-11-14
- •玩转Android之手摸手教你DIY一个抢红包神器!2016-10-30
- •一个开源音乐播放器,低仿QQ音乐!2016-10-23
- •如何使用MVP模式搭建我们的Android应用?2016-10-09
- •WmS详解(二)之如何理解Window和窗口的关系?基于Android7.0源码2016-11-19
- •http协议Authorization认证方式在Android开发中的使用2016-11-13
- •想学React Native?你只需要一个App!(11月5号更新)2016-11-02
- •Android开发之神奇的Fading Edge,让你的View更有层次感!2016-10-24
- •Android自定义View,高仿QQ音乐歌词滚动控件!2016-10-22
0 0
- 关于ComponentName的使用
- 关于ComponentName的使用
- 关于ComponentName的使用
- ComponentName的使用
- ComponentName类的使用
- Android ComponentName的使用
- 关于ComponentName的一些用法
- ComponentName使用
- ComponentName的使用及相关介绍
- android ComponentName的使用 之app交互
- 使用ComponentName启动Activity
- Android中app之间的交互(二,使用ComponentName)
- [RK3288][Android6.0] 调试笔记 --- ComponentName的使用
- ComponentName的意思
- ComponentName的意思
- Android ComponentName的用法
- Android ComponentName的用法
- ComponentName的意思
- "=="、equals和hashCode有什么区别
- 黑色星期五
- 1171 保留整数 sdut
- 功能错误小结
- 震惊!微信公众号的真相!
- 关于ComponentName的使用
- 3.偏头痛杨的Java入门教学系列之表达式&运算符&关键字&标识符&表达式篇
- 查找代码的中文插件
- 理解Flink(一):数据流编程模型
- springMVC 访问过程
- 若干题目2
- C++入门——排序
- 定制Spring Boot的Banner
- CentOS7下安装solr服务器