软件世界网 购物 网址 三丰软件 | 小说 美女秀 图库大全 游戏 笑话 | 下载 开发知识库 新闻 开发 图片素材
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
移动开发 架构设计 编程语言 Web前端 互联网
开发杂谈 系统运维 研发管理 数据库 云计算 Android开发资料
  软件世界网 -> 移动开发 -> 阅读《Android从入门到精通》(34)——IntentFilter -> 正文阅读

[移动开发]阅读《Android从入门到精通》(34)——IntentFilter

Intent Filter 作用


用于传递期望动作、共享数据、指定动作执行的组件类别,以及其他有关指令,必要时会找寻或启动 Intent Filter 指定的组件来响应这个 Intent。

Intent 组成成分


[img]http://img.blog.csdn.net/20160331185112918?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center

动作过滤


一个意图对象只能指定一个动作名称,而一个过滤器可能列举多个动作名称。如果意图对象或过滤器没有指定任何动作,结果将如下:
如果过滤器没有指定任何动作,那么将阻塞所有的意图,因此所有的意图都会测试失败。没有意图能够通过这个过滤器。
另一方面,只要过滤器包含至少一个动作,一个没有指定动作的意图对象自动通过这个测试。

类别过滤


对于一个能够通过类别匹配测试的意图,意图对象中的类别必须匹配过滤器中的类别。这个过滤器可以列举另外的类别,但它不能遗漏在这个意图中的任何类别。
原则上一个没有类别的意图对象应该总能够通过匹配测试,而不管过滤器里有什么。大部分情况下这个是对的。但有一个例外,Android 把所有传给 startActivity() 的隐式意图当作他们包含至少一个类别:"android.intent.category.DEFAULT" (CATEGORY_DEFAULT 常量)。 因此,想要接收隐式意图的活动必须在它们的意图过滤器中包含"android.intent.category.DEFAULT"。(带"android.intent.action.MAIN"和"android.intent.category.LAUNCHER"设置的过滤器是例外)

数据过滤


当一个意图对象中的 URI 被用来和一个过滤器中的 URI 比较时,比较的是 URI 的各个组成部分。例如,如果过滤器仅指定了一个 scheme,所有该 scheme 的 URIs 都能够和这个过滤器相匹配;如果过滤器指定了一个 scheme、主机名但没有路经部分,所有具有相同 scheme 和主机名的 URIs 都可以和这个过滤器相匹配,而不管它们的路经;如果过滤器指定了一个 scheme、主机名和路经,只有具有相同 scheme、主机名和路经的 URIs 才可以和这个过滤器相匹配。当然,一个过滤器中的路径规格可以包含通配符,这样只需要部分匹配即可。
数据测试同时比较意图对象和过滤器中指定的 URI 和数据类型。规则如下:
(1)一个既不包含 URI 也不包含数据类型的意图对象仅在过滤器也同样没有指定任何 URIs 和数据类型的情况下才能通过测试。
(2)一个包含 URI 但没有数据类型的意图对象仅在它的 URI 和一个同样没有指定数据类型的过滤器里的 URI 匹配时才能通过测试。这通常发生在类似于 mailto 和 tel——这样的 URIs 上,它们并不引用实际数据。
(3)一个包含数据类型但不包含 URI 的意图对象仅在这个过滤器列举了同样的数据类型而且也没有指定一个 URI 的情况下才能通过测试。
(4)一个同时包含 URI 和数据类型(或者可从 URI 推断出数据类型)的意图对象可以通过测试,如果它的类型和过滤器中列举的类型相匹配的话。如果它的 URI 和这个过滤器中的一个 URI 相匹配或者它有一个内容 content: 或者文件 file:URI 而且这个过滤器没有指定一个 URI,那么它也能通过测试。换句话说,一个组件被假定为支持 content: 和 file: 数据如果它的过滤器仅列举了一个数据类型。

其他过滤


如果一个 Intent 可以通过不止一个活动或服务的过滤器,那么用户会被询问那个组件被激活,没找到目标则会产生异常。
上述内容表明组件可以从文件或者内容提供者获取本地数据。因此,他们的过滤器仅列出数据类型而不必明确指出 content: 和 file:scheme 的名字。
指定数据类型不指定 URL 最通用,也可以指定 scheme 和数据类型。

Intent Filter 类方法


[img]http://img.blog.csdn.net/20160331174550486?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
[img]http://img.blog.csdn.net/20160331174606830?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
......显示全文...
    点击查看全文


上一篇文章      下一篇文章      查看所有文章
2016-04-02 20:51:48  
移动开发 最新文章
深入了解android中的消息机制Handler
Android
Libgdx之BitmapFont字体
AndroidApp发布到应用市场的流程
Android开发找工作之前先看看这些知识点吧
View的事件分发机制解析
简单介绍了解白鹭引擎Egret
Cocos2d
android获取本地图片(二)
动画特效七:碰撞动画
360图书馆 软件开发资料 文字转语音 购物精选 软件下载 美食菜谱 新闻资讯 电影视频 小游戏 Chinese Culture 股票 租车
生肖星座 三丰软件 视频 开发 短信 中国文化 网文精选 搜图网 美图 阅读网 多播 租车 短信 看图 日历 万年历 2018年1日历
2018-1-17 14:59:55
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  软件世界网 --