WEB开发网
开发学院手机开发Android 开发 Intent Android 详解 阅读

Intent Android 详解

 2010-09-21 01:45:00 来源:WEB开发网   
核心提示:filter中的一个. Action 测试 . . . 一个intent对象只能指定一个action, 而一个intent filter可以指定多个action. action列表不能为空, 否则它将组织所有的intent. 一个intent对象的action必须和intent filter中的某一个action匹配,
filter中的一个. Action 测试 . . . 一个intent对象只能指定一个action, 而一个intent filter可以指定多个action. action列表不能为空, 否则它将组织所有的intent. 一个intent对象的action必须和intent filter中的某一个action匹配, 才能通过. 如果intent filter的action列表为空, 则不通过. 如果intent对象不指定action, 并且intent filter的action列表不为空, 则通过. Category 测试 . . . 注意前面说到的对于action和category的常数是在代码中用的,而不是manifest文件中用的. 例如, CATEGORY_BROWSABLE常数对应xml中的表示为"android.intent.category.BROWSABLE". 一个intent要通过category测试, 那么该intent对象中的每个category都必须和filter中的某一个匹配. 理论上来说, 一个intent对象如果没有指定category的话, 它应该能通过任意的category 测试. 有一个例外: android把所有的传给startActivity()的隐式intent看做至少有一个category: "android.intent.category.DEFAULT". 因此, 想要接受隐式intent的activity必须在intent filter中加入"android.intent.category.DEFAULT". ("android.intent.action.MAIN" 和"android.intent.category.LAUNCHER"的intent filter例外. 它们不需要"android.intent.category.DEFAULT".) Data test . . . 每个元素指定了一个URI和一个数据类型. URI每个部分为不同的属性 -- scheme, host, port, path: scheme://host:port/path 例如, 在如下的URI中: content://com.example.project:200/folder/subfolder/etc scheme为"content", host为"com.example.project", port为"200", path为"folder/subfolder/etc". host和port一起组成了URI authority. 如果host未指定,则port被忽略. 这些属性都是可选的,但它们并非相互独立: 要使一个authority有意义,必须指定一个scheme. 要使一个path有意义, 必须指定一个scheme和一个authority. 当intent对象中的URI和intent filter中相比较时, 它只和filter中定义了的部分比较. 例如, 如果filter中之定义了scheme,那么所有包含该scheme的URI的intent对象都通过测试.对于path来说,可以使用通配符来进行部分匹配. 元素的type属性指定了数据类型. 它在filter中比在URI中更常见. intent对象和filter都可以使用"*"通配符作为子类型. 例如"text/*" "audio/*"表示所有的子类型都匹配. data测试的规则如下: 一个不含uri也不含数据类型的intent对象只通过两者都不包含的filter.

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

Tags:Intent Android 详解

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