理解Intent

1.要激活新的Activity,或者令现有的Activity执行新操作,可以用Contex.tstartActivity或Activity.startActivityForResult,两个方法所需要的参数就是一个Intent,指明其意图.

2.启动一个新服务,或者向一个已有的服务传递新指令,调用Context.startService或Context.bindService

3.Context.sendBroadcast(),Context.sendOrderBroadcast()和Context.sendStickBroadcast()可以发送BroadcastIntent.发送后,所有注册的匹配的IntentFilter的BroadcastReceiver就会被激活

 

三种Intent不会混发.

 

Intent对象包含以下几部分:

1.组件名称,可选项,若指明则该Intent为显式,直接传递给目标组件,否则通过其他信息和已注册的IntentFilter比较选择.

2.Action,描述Intent触发的动作的字符串.

3.Data,描述Intent要操作的数据URI和数据类型.

4.Category,被请求组件的额外描述信息.

5.Extra,附加的额外信息

6.Flag

 

一个组件需要在Manifest.xml中声明自己所含组件的过滤器(IntentFilter)来响应隐式Intent,否则仅能响应显式Intent,解析比较隐式Intent时,考察以下3项

1.Action  2.Data  3.Category

且3项必须全部匹配组建才会响应.

 

为组件声名自己的IntentFilter常见方法是在Manifest.xml中描述,对于

 

1.Action

<intent-filter>

<action android:name="com.exmple.project.SHOW_CURRENT"/>

<action android:name="com.exmple.project.SHOW_RECENT"/>

</intent-filter>

一个<intent-filter>至少包含一个<action >,否则永远不会匹配.

如果Intent请求与<intent-filter>中的一个<action >匹配,则算通过.

如果Intent请求未指定Intent类型,则只要<intent-filter>包含一个<action >类型,就能通过

 

2.Data

<intent-filter>

<data android:type="video/mpeg" android:scheme="http".../>

<data android:type="audio/mpeg" android:scheme="http".../>

</intent-filter>

该元素指定了希望接受的Intent请求的数据URI和数据类型,URI被分为3部分匹配:scheme,authority和path.用setData设定的请求的URI和数据类型需要匹配,若过滤器还指定了authority和path则也需要匹配

 

3.Category

<intent-filter>

<category android:name="android.Intent.Category.DEFAULT"/>

<category android:name="android.Intent.Category.BROWSABLE"/>

</intent-filter>

仅当Intent请求中所有的Category与组件中某一个<category>完全匹配时才会通过,<intent-filter>中其余的<category>不会影响,若请求没有指定<category>,则仅当<intent-filter>也无<category>时才可以通过

 

如果超过一个组件匹配了隐式请求,则系统回列出供用户选择

 

最后插一句:模拟器字带的API Demos程序很有用,其源代码在安装目录下/samples/ApiDemos/src/com/emaple/android/apis/app

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值