intent的Action与Category属性都是一个普通的字符串,Action代表该Intent所要完成的一个抽象动作,而Category则用于为Action增加额外的信息,它们通常都配合使用。例如指定一个Intent的Action属性来启动一个Activity,首先在当前Activity中生成一个Activity对象并指定它的Action属性,由于该属性只是一个普通的字符串,这个就需要自己协调。
public final static String Action = "Action_Test";
Intent intent = new Intent();
intent.setAction(Action);
startActivity(intent);
这里没有指定Category属性是因为当程序创建Intent时,该Intent默认启动的Category属性值为Intent.CATEGORY_DEFAULT常量。而且一个Intent只能指定一个Action属性,但Categoty属性的数量不定。
接下来就需要在目标Activity的Manifets配置中设置它的Action与Category属性。
<activity android:name=".SecondActivity"
android:label="@string/app_name">
<intent-filter>
<!-- 指定该Activity能响应Action为指定字符串的Intent -->
<action android:name="org.crazyit.intent.action.CRAZYIT_ACTION" />
<!-- 指定该Action能响应Category属性为指定字符串的Intent -->
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
这样就不需要以“硬编码”的方式来制定要跳转的目标Activity,因此可以启动系统的其他应用的组件(只要系统允许)。