首页 > 代码库 > android开发之Intent(1)

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。

android开发之Intent(1)