一、Intent对象介绍
Intent是组件与组件通信的纽带。
应用程序的三个核心组件都是通过Intent的消息激活。
Android四大组件:
1、Activity(活动)->前台界面
startActivity() 启动一个Activity
startActivityForRestult() 使一个已存在的活动去做新的事。
2、Service(服务) ->后台服务
startService()初始化一个Service或传递一个新的指令给已在运行的Service
bindService()建立调用组件与服务的连接。
3、Broadcast Receiver(广播提供商)->回调函数
sendBroadcast()
sendOrderedBroadcast()
sendStickyBroadcast()
4、Content Provider(内容提供商)-> 共享数据
二、Intent对象的组成
1、组件名称(包名或类名)Component、Class
设置:setCompronent()/setClass/setClassName()
读取:getComponent
2、动作 Action
设置:setAction()
获取: getAction()
3、数据 Data
setData()指定数据的URI
setType()指定数据的MIME类型
如果动作是ACTION_CALL 数据字段是一个 tel:URI和将要拨打的电话号码;
如果动作是ACTION_VIEW数据字段是一个 http:URI接收活动将被调用去下载和显示URI指向的数据。
4、种类 Category
通用addCategory()添加,常见种类:CATEGORY_LAUNCHER
5、附件信息 Extras
附加信息可以作为一个Bundle
安装:putExtras()
读取:getExtras()
三、Intent Filter过滤器
使用Intent Filter,应用程序组件告诉Android,它们能为其它程序的组件的动作请求提供服务,包括同一个程序的组件,本地的或第三方的应用程序。
注册一个应用程序组件为Intent处理者,在组件的manifest节点添加一个intent-filter标签。
常见的Intent Fileter检测
1、动作检测
清单文件中的元素以子元素列出动作。
2、种类检测
清单文件中的元素以子元素列出种类。
3、数据检测
清单文件中的元素以子元素列出数据。
scheme
host
port
path
scheme://host:prot/path
四、显示Intent和隐式Intent
1、显示Intent
通过名字指定目标组件。本身程序使用居多
//创建Intent对象
Intent intent = new Intent();
//设置启动的类
intent.setClass(MainActivity.this,MyActivity.class);
//启动Activity
startActivity(intent);
2、隐式Intent
并不指定目标的名字,(组件名字字段是空的)。隐式intent经常用于激活其它应用程序中的组件。
//创建一个意图对象
Intent intent = new Intent();
//设置打电话动作
intent.setAction(Intent.ACTION_VIEW);
//打包数据,放入Intent
intent.setData(Uri.parse("tel:13020002007"));
//根据意图对象启动对应Activity
startActivity(intent);