Intent理解
来源:互联网 发布:为什么淘宝订单异常 编辑:程序博客网 时间:2024/06/07 00:03
参考网上的资料,自己加以整理。
参考:http://liangruijun.blog.51cto.com/3061169/634411/
http://blog.csdn.net/androidzhaoxiaogang/article/details/6856201
http://www.oschina.net/question/565065_67909?fromerr=sHMTBhj2
Intent的属性包括:action(动作)、data(数据)、category(分类)、compent(组件)、extras(扩展信)。Intent的这些属性描述了发送这个Intent的组件想要做什么,比如打开通讯录、打开网页,而每个Activity、service、receiver在ManiFest中注册的intent-filter会标记它自身会做什么。那么一个Intent被发送出来后,系统就会通过intent-filter来查找能处理这个intent的组件来处理这个intent,如果多个组件都能处理,则由用户选择。所以,Intent译为意图,非常形象。
一、发送Intent
不同的方法会将Intent发送个不同的组件。如startActivity()只会匹配Activity的intent-filter。
二、Intent的属性(Intent如何描述它的意图)
compent:compent是最明确的意图,compent直接指明接收intent的组件,那么系统就不执行查找,直接将intent发送给指明的组件。常用的intent.setClass(),就是就是设置了intent的compent的属性;另外,在启动另一个应用时ComponentName toActivity = new ComponentName("包名", "类名");intent.setComponent(toActivity);
也是设置compent属性。
action:表示将要执行的动作。ACTION_CALL activity 启动一个电话.ACTION_EDIT activity 显示用户编辑的数据.ACTION_MAIN activity 作为Task中第一个Activity启动ACTION_SYNC activity 同步手机与数据服务器上的数据.ACTION_BATTERY_LOW broadcast receiver 电池电量过低警告.ACTION_HEADSET_PLUG broadcast receiver 插拔耳机警告ACTION_SCREEN_ON broadcast receiver 屏幕变亮警告.ACTION_TIMEZONE_CHANGED broadcast receiver 改变时区警告.
category:是action的附加信息。我们在MainActivity中经常见到的:
<action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" />
其中action表示它第一个启动,category表示它是顶级程序。
data:要实施的具体的数据,一般是一个Uri。例如:
ACTION_VIEW content://contacts/1 –显示ID为1的联系人
ACTION_DIAL content://contacts/1 – 在拨号器中显示ID为1的联系人。
Uri的格式为:scheme://host:port/path or
pathPrefix or
pathPattern
path、pathPrefix、pathPattern可以设置一个或者多个,他们的区别是:
path 用来匹配完整的路径,如:http://example.com/blog/abc.html,这里将 path 设置为 /blog/abc.html 才能够进行匹配;
pathPrefix 用来匹配路径的开头部分,这里将 pathPrefix 设置为 /blog 就能进行匹配了;
pathPattern 用表达式来匹配整个路径
在manifest中可以这样定义:
<intent-filter>
<action android:name="android.intent.action.VIEW"></action>
<category android:name="android.intent.category.DEFAULT"></category>
<data android:scheme="http" android:host="yoursite.com" android:pathPattern=".*//.pdf"></data>
</intent-filter>
匹配符号:
“” 用来匹配0次或更多,如:“a” 可以匹配“a”、“aa”、“aaa”…
“.” 用来匹配任意字符,如:“.” 可以匹配“a”、“b”,“c”…
因此 “.*” 就是用来匹配任意字符0次或更多,如:“.*html” 可以匹配 “abchtml”、“chtml”,“html”,“sdf.html”…
转义:因为当读取 Xml 的时候,“/” 是被当作转义字符的(当它被用作 pathPattern 转义之前),因此这里需要两次转义,读取 Xml 是一次,在 pathPattern 中使用又是一次。如:“” 这个字符就应该写成 “//”,“/” 这个字符就应该写成 “////”。
extras:附加信息。可以将一些数据放在extras中,传递数据。
- 理解Intent
- Intent理解
- Intent理解
- Intent理解
- intent理解
- 理解Intent和Intent Filter
- 理解Intent和Intent Filter
- android intent的理解
- 深入理解 intent (1)
- What:理解Intent filter
- Intent Flags理解
- Intent 全面理解
- 【Android】Intent理解
- Intent深入理解
- 关于Intent的理解
- Intent 的理解
- Android之Intent用途理解
- 深入理解Intent和IntentFilter
- 通过Ajax方式上传文件,使用FormData进行Ajax请求
- 使用Xutils遇到的问题
- modbus协议(2)
- 在iOS应用中从竖屏模式强制转换为横屏模式
- Win10 下使用Microview相机SDK进行二次开发
- Intent理解
- js常用校验
- poj 2299 Ultra-QuickSort
- C++第四次实验—继承和派生项目3
- iOS 运行时
- linux 源码编译安装
- AllJoyn-跨平台方法调用返回值为键值对(Maps)
- 统计代码行数
- 详解 Objective-C 中的 Runtime(下)