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。
时间: 2024-12-28 09:20:18