Android SDK 开发之应用程序基础
2010-03-23 04:53:00 来源:WEB开发网关于manifest文件的结构详见The AndroidManifest.xml.
Intent filters
Intent 对象可以显式的指定一个目标component。如果这样的话,android会找到这个component(基于manifest文件中的声明)并激活它。但如果一个目标不是显式指定的,android必须找到响应intent的最佳component。它是通过将Intent对象和目标的intent filter相比较来完成这一工作的。一个component的intent filter告诉android该component能处理的intent。intent filter也是在manifest文件中声明的。例如:
〈?xml version="1.0" encoding="utf-8"?〉
〈manifest . . . 〉
〈application . . . 〉
〈activity android:name="com.example.project.FreneticActivity"
android:icon="@drawable/small_pic.png"
android:label="@string/freneticLabel"
. . . 〉
〈intent-filter . . . 〉
〈action android:name="android.intent.action.MAIN" /〉
〈category android:name="android.intent.category.LAUNCHER" /〉
〈/intent-filter〉
〈intent-filter . . . 〉
〈action android:name="com.example.project.BOUNCE" /〉
〈data android:mimeType="image/jpeg" /〉
〈category android:name="android.intent.category.DEFAULT" /〉
〈/intent-filter〉
〈/activity〉
. . .
〈/application〉
〈/manifest〉
第一个filter — action "android.intent.action.MAIN"和 category "android.intent.category.LAUNCHER"表示该activity应该是在主程序启动界面中出现的一个程序,用户可以直接在主界面中启动它。
第二个filter声明了一个可以操作某种特定类型数据的action。
一个component可以有任意多数量的intent filter,每一个都声明了不同的能力集合。如果它没有任何filter,那么它只能在显式指定名字的方式下启动。
对于在代码中创建和注册的broadcast receiver,intent filter直接被实例化为一个IntentFilter对象。其他的filter在manifest中设置。
关于Intent Filter 详见单独的文档。
Activities and Tasks
前面提到了,一个activity可以启动另一个activity,包括定义在不同的application中的activity。假设你希望用户显示某个地方的地图。已经有一个activity可以做这件事情,因此你的activity只需要把一个intent
更多精彩
赞助商链接