Intent是一种轻量级的消息传递机制,可以在同一个应用程序内部的不同组件之间传递信息,也可以在不同应用程序的组件之间传递信息,还可以作为广播时间发布Android系统消息。
Intent是一个动作的完整描述,包含了动作的产生组件、接收组件和所传递的数据信息,接收组件在接收到Intent所传递的 消息后,会执行相应的动作。因此,Intent可以非常方便地启动掐组件,如启动Activity或Service。
Intent的另一个用途是在Android系统上发布广播消息。广播消息可以是程序的内部消息,可以是第三方程序发出的消息,也可以是Android系统消息,如手机的信号变化或电池的电量过低等信息。任何程序都可以根据需要发布广播消息,其他程序也可以通过注册Intent过滤器获得这些广播消息。
隐式启动
隐式启动不需要致命需要启动哪一个Activity,而由Android系统来决定,这样有利于降低组件之间的耦合度。
隐式启动Activity时,Android系统会在程序运行时解析Intent,并根据一定的规则对Intent和Activity进行匹配,使Intent上的动作、数据与Activity完全吻合。匹配的组件可以是程序本身的Activity,也可以是Android系统内置的Activity,还可以是第三方应用程序提供的Activity。
程序开发人员可以将浏览动作和Web地址作为参数传递给Intent,Android系统则通过匹配动作和数据格式,找到最适合于此动作和数据格式的组件。
Intent intent=new Intent(Intent.ACTION_VIEW,Uri.parse("http://www.google.com.hk"));
startActivity(intent);
动作 | 说明 |
ACTION_ANSWER | 打开接听电话的Activity,默认为Android内置的拨号界面 |
ACTION_CALL | 打开拨号盘界面并拨打电话,使用Uri中的数字部分作为电话号码 |
ACTION_DELETE | 打开一个Activity,对所提供的数据进行删除操作 |
ACTION_DIAL | 打开内置拨号界面,显示Uri中提供的电话号码 |
ACTION_EDIT | 打开一个Activity,对所提供的数据进行编辑操作 |
ACTION_INSERT | 打开一个Activity,在提供数据的当前位置插入新项 |
ACTION_PICK | 启动一个子Activity,从提供的数据列表中选取一项 |
ACTION_SEARCH | 启动一个Activity,执行搜索动作 |
ACTION_SENDTO | 启动一个Activity,向数据提供的联系人发送信息 |
ACTION_SEND | 启动一个可以发送数据的Activity |
ACTION_VIEW | 最常用的动作,对以Uri方式传送的数据,根据Uri协议部分以最佳方式启动相应的Activity进行处理。对于http:address将打开浏览器查看;对于tel:address将打开拨号界面并呼叫指定的电话号码 |
ACTION_WEB_SEARCH | 打开一个Activity,对提供的数据进行Web搜索 |