我是靠谱客的博主 寒冷樱桃,最近开发中收集的这篇文章主要介绍Android的Intent&IntentFilter Intent属性及Intent-filter配置,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
Android使用Intent来封装程序的调用意图,利于高层次解耦
三种重要组件:Activity、Service、BroadcastReceiver
Intent包含Component、Action、Category、Data、Type、Extra和Flag这7种属性
Component
Intent的Component属性需要接受一个ComponentName对象,ComponentName对象包含如下构造器:
- ComponentName(String pkg, String cls):创建pkg所在包下cls类所对应的组件
- ComponentName(Context pkg, String cls):创建pkg所对应的包下的cls类所对应的组件
- ComponentName(Context pkg,Class<?> cls):创建pkg所对应的包下的cls类所对应的组件
Intent还包含如下方法:
- setClass(Context packageContext,Class<?> cls):设置该Intent将要启动的组件对应的类
- setClassName(Context packageContext, String className):设置该Intent将要启动的组件对应的类名
- setClassName(String packageName, String className):设置该Intent将要启动的组件对应的类名
Action、Category与Intent-filter配置
Action代表Intent所要完成的抽象动作,Category则用于为Action增加额外的附加类别信息(Action并不指定哪个组件响应)
Action:Intent.ACTION_VIEW并不知道——这取决于Activity的<intent-filter.../>配置,只要某个Activity的<intent-filter.../>配置中包含了该ACTION_VIEW,该Activity就有可能被启动
每个Intent只能指定一个Action(setAction()),但可以指定多个Category要求(addCategory());
每个组件可以声明自己满足多个Action要求、可满足多个Category要求。只要某个组件能满足>=Intent所指定的要求,那么该Intent就能启动该组件
系统Action、category
setAction()
addCategory()
Data、Type属性 与 intent-filter配置
Data属性通常用于向Action属性提供操作的数据。Data属性接受一个Uri对象,一个Uri对象通常通过如下形式表示:
content://com.android.contacts/
contacts/1
tel:123
Uri字符串总满足如下格式:
scheme://host:port/
path
Type属性用于指定该Data所指定Uri对应的MIME类型,这种MIME类型可以是
- 无论先设置Type还是Data,两者一定会被后设置的一项覆盖,若想Intent同事拥有这两种属性,则应该调用Intent的setDataAndType()方法
在AndroidManifest.xml文件中为组件声明Data、Type属性都通过<data.../>元素进行,格式如下:
<
data
android:mimeType
=
""
android:scheme
=
""
android:host = ""
android:port = ""
android:path = ""
android:pathPrefix = ""
android:host = ""
android:port = ""
android:path = ""
android:pathPrefix = ""
android:pathPattern=""
/>
Intent 的Type 属性也用于指定该Intent的要求,必须对应组件中<intent-filter.../>元素中<data.../>子元素的mime Type属性与此相同,才能启动该组件
Intent 的Data 属性则不同,为Intent指定Data时,目标组件已定义部分<data.../>子元素必须与Intent的Data属性完全相同(当然,目标组件可能只定义了部分子元素)scheme;scheme、host;scheme、host、port(可省略)、path;
Extra 属性
用于多个Action之间交换数据,是一个Bundle对象,Bundle对象就像一个Map对象,可以存入多组key-value对,这样就棵通过Intent在不同Activity之间交换数据
Flag属性
添加额外的控制旗标,调用addFlags()添加
Intent包含如下常用Flag旗标:
FLAG_ACTIVITY_BROUGHT_TO_FRONT
FLAG_ACTIVITY_CLEAR_UP
FLAG_ACTIVITY_NEW_TASK
FLAG_ACTIVITY_NO_ANIMATION
FLAG_ACTIVITY_NO_HISTORY
FLAG_ACTIVITY_REORDER_TO_FRONT
FLAG_ACTIVITY_SINGLE_TOP
用Intent创建Tab页面
之前已接触TabActivity.添加Tab页面使用了
setContent(int viewId)
setContent(Intent intent)
最后
以上就是寒冷樱桃为你收集整理的Android的Intent&IntentFilter Intent属性及Intent-filter配置的全部内容,希望文章能够帮你解决Android的Intent&IntentFilter Intent属性及Intent-filter配置所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复