android开发之Intent(1)

Intent可以用于启动组件,并且携带数据,充当组件间通信的媒介。

Intent对象大致包含Component、Action、Category、Data、Type、Extra和Flag7种属性。

以下将分别说说。

 

Component

   Component可以通过指定包名和类名来启动特定组件。因此,明确指定Component属性的Intent也称为显式Intent。例子如下:

// 创建一个ComponentName对象
ComponentName comp = new ComponentName(FromActivity.this,
        ToActivity.class);
Intent intent = new Intent();
// 为Intent设置Component属性
intent.setComponent(comp);
startActivity(intent);

    由于包名与Context是一一对应的,因此,ComponentName中也提供了传入Context参数的构造方法。

 

Action

     如下,设置Action为“xxx”,如果某个Activity在AndroidManifest.xml中包含形如代码2中的代码,则可以利用代码1启动该activity。每个Intent只可以指定一个Action。另外,如果在没有设置Category时,会默认使用”android.intent.category.DEFAULT”,因此在代码2中需要加入<category android:name="android.intent.category.DEFAULT" />

代码1

// 创建Intent对象
Intent intent = new Intent();
// 为Intent设置Action属性(属性值就是一个普通字符串)
intent.setAction("xxx");
startActivity(intent);

代码2

<intent-filter>
    <action android:name="xxx" />    
    <category android:name="android.intent.category.DEFAULT" />
</intent-filter>

 

Category

   使用方法与Action类似,使用intent.addCategory(“xxx”),然后在AndroidManifest.xmlActivity的注册中加入<category android:name=”xxx”>即可。与Action不同的是,一个Intent可以包含多个Category值,而这个Intent只能启动在注册时加入了所有该Intent含有的Category值的Activity。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。