1、Intent简介
Intent负责在Android四大组件中进行调用传递,Intent描述一次操作的动作、动作涉及数据、附加数据等,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。如启动一个Activity、发送广播、启动服务等
2、Intent结构(以下只列出常用的)
private String mAction;
private Uri mData;
private String mType;
private ComponentName mComponent;
private HashSet<String> mCategories;
private Bundle mExtras;
mAction:描述要执行的动作,调用组件和被调用组件约定,由于Intent在系统中是全局的,故自定义的Action需要加上Namespace,如com.google.app.myapp.CUSTOM_ACTION,系统预定义了标准的Action,如ACTION_MAIN、ACTION_VIEW、ACTION_EDIT等
mData:用于操作的数据,比如在联系人列表中的具体某个人的信息,用uri来表示
mType:显式指定Intent的数据类型(MIME),一般Intent数据类型能够根据数据本身进行判定,但是假如设置了这个属性,会强制采用显式指定的类型
mComponent:指定Intent的目标组件的类名称。通常 Android会根据Intent 中包含的其它属性的信息,比如action、data/type、category进行查找,最终找到一个与之匹配的目标组件。但是,如果 component这个属性有指定的话,将直接使用它指定的组件,而不再执行上述查找过程。指定了这个属性以后,Intent的其它所有属性都是可选的。
mCategories:给执行动作添加额外的信息,如CATEGORY_LAUNCHER 将此Activity添加到LAUNCHER 最顶层,即当启动程序时使这个界面第一个显示
mExtras:是其它所有附加信息的集合。使用extras可以为组件提供扩展信息,比如,如果要执行“发送电子邮件”这个动作,可以将电子邮件的标题、正文等保存在extras里,传给电子邮件发送组件。
3、Intent使用
A、启动一个Activity,实现Activity之间的跳转
Intent it = new Intent(Main.this,Second.class);
startActivity(it);
另外Intent可以从开发者自己的程序跳转到系统应用界面,比如点击一个按钮跳转到发短信的界面,其使用方式是通过uri的方式进行跳转,具体如下:
Intent it = new Intent(Intent.ACTION_VIEW);
it.putExtra("sms_body", "The SMS text");
it.setType("vnd.android-dir/mms-sms");
startActivity(it);
B、广播消息
Intent it = new Intent();
it.setAction("message");
it.putExtra("message ", msg);
sendBroadcast(it);
C、启停服务
Intent it = new Intent(Main.this,Second.class);
startService(it);
stopService(it);