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

Android SDK 开发之 Intent 和 Intent Filter

 2010-03-23 04:12:00 来源:WEB开发网   
核心提示:其它的程序总是可以使用自定义的数据加上显式的程序名称来调用该组件.一个intent filter是IntentFilter类的实例, 但是它一般不出现在代码中,而是出现在android Manifest文件中, 以《intent-filter》的形式. (有一个例外是broadcast receiver的intent
其它的程序总是可以使用自定义的数据加上显式的程序名称来调用该组件.

一个intent filter是IntentFilter类的实例, 但是它一般不出现在代码中,而是出现在android Manifest文件中, 以《intent-filter》的形式. (有一个例外是broadcast receiver的intent filter是使用 Context.registerReceiver()来动态设定的, 其intent filter也是在代码中创建的.)

一个filter有action, data, category等字段. 一个隐式intent为了能被某个intent filter接受, 必须通过3个测试. 一个intent为了被某个组件接受, 则必须通过它所有的intent filter中的一个.

Action 测试

《intent-filter . . . 》

《action android:name="com.example.project.SHOW_CURRENT" /》

《action android:name="com.example.project.SHOW_RECENT" /》

《action android:name="com.example.project.SHOW_PENDING" /》

. . .

《/intent-filter》

一个intent对象只能指定一个action, 而一个intent filter可以指定多个action. action列表不能为空, 否则它将组织所有的intent.

一个intent对象的action必须和intent filter中的某一个action匹配, 才能通过.

如果intent filter的action列表为空, 则不通过.

如果intent对象不指定action, 并且intent filter的action列表不为空, 则通过.

Category 测试

《intent-filter . . . 》

《category android:name="android.intent.category.DEFAULT" /》

《category android:name="android.intent.category.BROWSABLE" /》

. . .

《/intent-filter》

注意前面说到的对于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

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

Tags:Android SDK 开发

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