必威体育Betway必威体育官网
当前位置:首页 > IT技术

ComponentName的使用及相关介绍

时间:2019-11-03 06:43:23来源:IT技术作者:seo实验室小编阅读:56次「手机版」
 

componentname

原文出处:http://blog.csdn.net/u012702547/article/details/49557905

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

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

第二个参数是你要启动的Activity或者Service的全称(包名+类名),代码如下:

启动一个Activity:

[java] view plain copy  print?

  1. Intent intent = new Intent();  
  2.             intent.setComponent(new ComponentName("com.example.otherAPP",  
  3.                     "com.example.otherapp.MainActivity2"));  
  4.             startActivity(intent);  

启动一个Service:

[java] view plain copy  print?

  1. Intent it = new Intent();  
  2. it.setComponent(new ComponentName("com.example.otherapp",  
  3.         "com.example.otherapp.MyService"));  
  4. startService(it);  

注意

如果你要的启动的其他应用的Activity不是该应用的入口Activity,那么在清单文件中,该Activity节点一定要加上Android:exported="true",表示允许其他应用打开,对于所有的Service,如果想从其他应用打开,也都要加上这个属性:

[java] view plain copy  print?

  1. <service  
  2.     android:name="com.example.otherapp.MyService"  
  3.     android:exported="true" >  
  4. </service>  
  5.   
  6. <activity  
  7.     android:name="com.example.otherapp.MainActivity2"  
  8.     android:exported="true" >  
  9. </activity>  

对于除了入口Activity之外的其他组件,如果不加这个属性,都会抛出“java.lang.SecurityException: permission Denial.....”异常

那么为什么入口Activity不用添加这个属性就可以被其他应用启动呢?我们来看一段入口Activity的注册代码:

[java] view plain copy  print?

  1. <activity  
  2.     android:name=".MainActivity"  
  3.     android:label="@string/app_name" >  
  4.     <intent-filter>  
  5.         <action android:name="android.intent.action.MAIN" />  
  6.   
  7.         <category android:name="android.intent.category.LAUNCHER" />  
  8.     </intent-filter>  
  9. </activity>  

入口Activity和普通Activity唯一不同的地方就是入口Activity多了一个过滤器,对于包含了过滤器的组件,意味着该组件可以提供给外部的其他应用来使用,它的exported属性默认为true,相反,如果一个组件不包含任何过滤器,那么意味着该组件只能通过指定明确的类名来调用,也就是说该组件只能在应用程序的内部使用,在这种情况下,exported属性的默认值是false。

文章最后发布于: 2016-10-12 21:30:57

相关阅读

别再使用产品路线图了,尝试GIST规划吧

在此之前,我创造了公平的产品策略,路线图和项目甘特图。现在我不再这样做了,因为我发现了一个更好的选择。首先,这是我以前做的事情:战

如何使用支付宝账号授权登录网站

本周在项目开发中使用到了支付宝授权登录(一键登录)我们的网站,周末做一下总结: 0.总体思路 为防止各位朋友看迷糊,先说一下整体执

SeekBar进度和缓冲进度使用

主要简单记录SeekBar的使用,例如视频播放进度条,不仅要显示播放进度,还要显示缓冲进度,以下做下简单说明。一、使用SeekBar的布局<See

SVN客户端使用——访问库文件

SVN客户端使用——如何访问库文件本地选择一个空间足够大的存储盘,新建一个名为SVN_WORK 文件夹专门用来存放SVN文件,在SVN_WORK文

稳压二极管的使用

稳压二极管又叫齐纳二极管,利用pn结反向击穿状态,其电流可在很大范围内变化而电压基本不变的现象,制成的起稳压作用的二极管。稳压管

分享到:

栏目导航

推荐阅读

热门阅读