本文实例讲述了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程序设计有所帮助。
本文向大家介绍详解Android中解析XML的方法,包括了详解Android中解析XML的方法的使用技巧和注意事项,需要的朋友参考一下 XML在各种开发中都广泛应用,Android也不例外。作为承载数据的一个重要角色,如何读写XML成为Android开发中一项重要的技能。今天就由我向大家介绍一下在Android平台下几种常见的XML解析和创建的方法。 在Android中,常见的XML解析器分别为S
本文向大家介绍Android中gson、jsonobject解析JSON的方法详解,包括了Android中gson、jsonobject解析JSON的方法详解的使用技巧和注意事项,需要的朋友参考一下 JSON的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据
本文向大家介绍Android pull解析xml的实现方法,包括了Android pull解析xml的实现方法的使用技巧和注意事项,需要的朋友参考一下 Android pull解析xml的实现方法 资源文件: persons.xml activity布局文件 activity_main.xml javaBean: 主activity: 如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大
本文向大家介绍Android RecyclerView使用方法解析,包括了Android RecyclerView使用方法解析的使用技巧和注意事项,需要的朋友参考一下 1.简介 RecyclerView是一种新的视图组,目标是为任何基于适配器的视图提供相似的渲染方式。它被作为ListView和GridView控件的继承者,在最新的support-V7版本中提供支持。RecyclerView架构
如何解决此错误?我在这段代码中遇到了一个错误: 无法解决方法的add(int,android.trey.startingpoint.nl.秒活动。碎片 谢谢你的帮助! 编辑:导入: 导入android。应用程序。活动导入android。支持v4。应用程序。碎片 导入android。操作系统。捆导入android。看法更平坦;导入android。看法菜单导入android。看法MenuItem;导入
我在Android应用程序中使用Mapbox,需要在地图上显示从A点到B点的方向。 我知道Mapbox提供的方向应用编程接口。但是我不能在我的应用程序中使用它,因为包括“com.mapbox.mapboxsdk: mapbox-Android-方向:1.0.0@aar”它在gradle文件中与我的应用程序中的另一个依赖项冲突(不同版本的改造)。 所以我不得不使用API方法。我发出一个url GET