Intent:android中连接各大组件通信的桥梁。
Intent有setClass、setClassName等方法,看类名就知道,设置一个指定的类,而这个类,就是目标类。
< intent-filter>在AndroidManifest.xml中配置,写在<activity>中,可以配置的属性如下:
1.<action android:name="xxx">指定该activity会响应setAction为xxx字符串的Intent
2.<category android:name="xxxx">指定该activity会响应addCategory为xxxx字符串的Intent
因为在AndroidManifest.xml中,activity指定的类是不能重复的,所以如果通过setClass和setClassName来启动一个Intent,那么程序的目标很明确,会直接跳到对应的activity
但action和category是可以重复的,也就是我activity1和activity2都配置了一样的action或者category的值,那么调用startActivity的时候就会出现一个选择框让你启动activity1或activity2来响应此次请求
例如在android中,本身系统就定义了很多action和category,例如
Intent intent = new Intent();
你会发现,会出现一大串的列表,没错,里面几乎是你手机上所以装的应用了,因为几乎每个程序都会有个
<action android:name="android.intent.action.MAIN" />,因为这是程序的入口。
3.Data属性:一般用于向action提供操作的数据,Data接收一个Uri对象
4.Type属性:指定Data属性若指定的Uri对应的MIME类型
Data属性和Type属性会相互覆盖,如果先setData后setType,则前面的setData是相当与无效的,反之先setType,则setType是无效的,如果想同时有效,可以调用setDataAndType方法。