WEB开发网
开发学院手机开发Android 开发 Android SDK 开发之 Intent 和 Intent Filter 阅读

Android SDK 开发之 Intent 和 Intent Filter

 2010-03-23 04:12:00 来源:WEB开发网   
核心提示:getCategories()获取intent所有的category.Extras为键-值对形式的附加信息. 例如ACTION_TIMEZONE_CHANGED的intent有一个"time-zone"附加信息来指明新的时区, 而ACTION_HEADSET_PLUG有一个"state&q
getCategories()获取intent所有的category.

Extras

为键-值对形式的附加信息. 例如ACTION_TIMEZONE_CHANGED的intent有一个"time-zone"附加信息来指明新的时区, 而ACTION_HEADSET_PLUG有一个"state"附加信息来指示耳机是被插入还是被拔出.

intent对象有一系列put...()和set...()方法来设定和获取附加信息. 这些方法和Bundle对象很像. 事实上附加信息可以使用putExtras()和getExtras()作为Bundle来读和写.

Flags

各种标志. 很多标志指示android系统如何启动一个activity(例如该activity属于哪个任务)和启动后如何处理它(例如, 它是否属于最近activity列表中).

android系统和应用程序使用intent对象来送出系统广播和激活系统定义的组件.

Intent Resolution Intent解析

intent有两种:

* 显式intent使用名字来指定目标组件. 由于组件名称一般不会被其它开发者所熟知, 这种intent一般用于应用程序内部消息-- 例如一个activity启动一个附属的service或者另一个activity.

* 隐式intent不指定目标的名称. 一般用于启动其它应用程序的组件.

Android将显式intent发送给指定的类. intent对象中名字唯一决定接受intent的对象.

对于隐式intent, android系统必须找到最合适的组件来处理它. 它比较intent的内容和intent filter. intent filter是组件的一个相关结构, 表示其接受intent的能力. android系统根据intent filter打开可以接受intent的组件. 如果一个组件没有intent filter, 那么它只能接受显式intent. 如果有, 则能同时接受二者.

当一个intent和intent filter比较时, 只考虑三个属性: action, data, category.

extra和flag在intent解析中没有用.

Intent filters

activity, service和broadcast receiver可以有多个intent filter来告知系统它们能接受什么样的隐式intent. intent filter的名字很形象: 它过滤掉不想接受的intent, 留下想接受的intent. 显式intent无视intent filter.

一个组件对能做的每件事有单独的filter. 例如, 记事本程序的NoteEditor activity有两个filter -- 一个启动并显示一个特定的记录给用户查看或编辑, 另一个启动一个空的记录给用户编辑.

Filters and security Filter和安全

一个intent filter不一定安全可靠. 一个应用程序可以让它的某个组件去接受隐式intent, 但是它没法防止这个组件接受显示intent.

上一页  1 2 3 4 5 6 7 8  下一页

Tags:Android SDK 开发

编辑录入:coldstar [复制链接] [打 印]
赞助商链接