当前位置: 移动技术网 > IT编程>移动开发>Android > Android解析Intent Filter的方法

Android解析Intent Filter的方法

2019年07月24日  | 移动技术网IT编程  | 我要评论

一代宗师国医馆,疯狂农民工,笔记本玩游戏不能全屏

本文实例讲述了android解析intent filter的方法。分享给大家供大家参考。具体分析如下:

匿名性质的运行时绑定使得理解android如何解析一个隐式intent到一个特定的应用程序组件变得重要。
 
和你之前看到的一样,当使用startactivity时,隐式intent解析到一个单一的activity。如果存在多个activity都有能力在特定的数据上执行给定的动作的话,android会从这些中选择最好的进行启动。
 
决定哪个activity来运行的过程称为intent解析。intent解析的目的是通过下面的过程找到可能匹配得最好的intent filter:
 
1. android把安装的包中可获得的intent filter放到一个列表中。

2. 动作和与正在解析的intent的种类不关联的intent filter会从列表中删除。

①. 动作匹配指intent filter包含特定的动作或没有指定的动作。一个intent filter有一个或多个定义的动作,如果没有任何一个能与intent指定的动作匹配的话,这个intent filter在算作是动作匹配检查失败。
 
②. 种类匹配更为严格。intent filter必须包含所有在解析的intent中定义的种类。一个没有特定种类的intent filter只能与没有种类的intent匹配。

3. 最后,intent的数据uri中的部分会与intent filter中的data标签比较。如果intent filter定义scheme,host/authority,path或mimetype,这些值都会与intent的uri比较。任何不匹配都会导致intent filter从列表中删除。

没有指定data值的intent filter会和所有的intent数据匹配。

①. mimetype是正在匹配的数据的数据类型。当匹配数据类型时,你可以使用通配符来匹配子类型(例如,earthquakes/*)。如果intent filter指定一个数据类型,它必须与intent匹配;没有指定数据的话全部匹配。
 
②. scheme是uri部分的协议——例如,http:,mailto:,tel:。
 
③. host-name或“data authority”是介于uri中scheme和path之间的部分(例如,www.google.com)。匹配主机名时,intent filter的scheme也必须通过匹配。
 
④. 数据path是紧接在“data authority”的后面(例如,/ig)。path只在scheme和host-name部分都匹配的情况下才匹配。

4. 如果这个过程中多于一个组件解析出来的话,它们会以优先度来排序,可以在intent filter的节点里添加一个可选的标签。最高等级的组件会返回。

android本地的应用程序组件和第三方应用程序一样,都是intent解析过程中的一部分。它们没有更高的优先度,可以被新的activity完全的代替,这些新的activity宣告自己的intent filter能响应相同的动作请求。

希望本文所述对大家的android程序设计有所帮助。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网