转载自:http://blog.csdn.net/xieyali/archive/2009/07/05/4323575.aspx
任何
Android应用程序的基础都是
Manifest文件:
Manifest.xml,这个文件保存在工程的根目录下。在这个文件里声明应用程序用到的所有组件,例如:
activities,
services,等等,而且说明这些组件如何组织到应用程序系统中;例如:可以表明哪一个
activity(或者
activities)应该出现在设备的主窗口中(例如:
launcher)。
当你创建工程时,系统帮助生成一个原始的
manifest文件。对于只包含一个
activity的简单的应用程序,原始的
manifest文件够了,或者只需要很小的改动。另外,
manifest也可以很复杂,比如
Android自带的
API样例,该文件就超过
1000多行。你的应用程序的
manifest行数大概也就介于此间吧。
manifest文件的大部分有趣的功能会在以后相应的章节更加详细的介绍。比如
service元素会在创建
service章节详细讲述。现在,主要关注
manifest文件的作用和它的一般结构。
在文件开始,有根,文件基本上就正确
manifest文件的根是这样一个
manifest元素:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.commonsware.android.search">
...
</manifest>
注意命名空间声明。奇怪的是,自动生成的
manifest文件,命名空间是应用在属性上,而不是元素上(例如,是
manifest,不是
android:manifest),然而,这种形式工作正确,只要
android不发生改变,就坚持用这种形式。
根元素
manifest里面最有用的信息是
package属性(奇怪的是
package前没有命名空间)。这里,你可填成你的
java package的名子,以后在
manifest文件里,如果需要类的名子,就可以用点来代替
package的名子,例如:如果在
manifest文件需要引用
com.commonsware.android.search.Snicklefritz,你就可以写成
.Snicklefitz,因为
com.commonsware.android.search已经被定义成应用程序的包。
权限,特殊工具,和应用程序
在
manifest元素里有如下子元素:
l
uses-permission元素,表示应用程序必须据有这些权限才能工作正常-
permissions章节
l
permission元素,定义一些权限,当其它的程序如果想使用你的程序的数据或者逻辑时,必须据有这些权限,参考
permissions章节
l
instrumentation元素,表示某些代码,当一些重要的系统事件发生时,这些代码被调用,例如:启动一个
activities,打印
log或者监视某些信息。
l
uses-library元素,挂钩(
hook)进可选的
android组件里,例如
mapping
services。
l
application元素,定义
manifest描述的应用程序的细节。
在上面的例子中,
uses-permission元素表明了应用程序将要使用的一些设备的功能,在这个例子中,就是程序据有了定位自己的功能。
applicaton元素描述了一些
activities,
serives和其它组成应用的一些组件。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.commonsware.android">
<uses-permission
android:name="android.permission.ACCESS_LOCATION" />
<uses-permission
android:name="android.permission.ACCESS_GPS" />
<uses-permission
android:name="android.permission.ACCESS_ASSISTED_GPS" />
<uses-permission
android:name="android.permission.ACCESS_CELL_ID" />
<application>
...
</application>
</manifest>
应用程序需要实现一些功能,对吗?
manifest文件最重要的部分就是
application元素的子元素。
创建新工程时,默认生成只含一个
activity元素的
manifest文件,如下:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.commonsware.android.skeleton">
<application>
<activity android:name=".Now" android:label="Now">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
这个
activity元素提供了如下信息,
android:name-实现
activity的类;和
android:label-当运行
activity时显示的名字;
intent-filter子元素-描述在什么条件下
activity才显示。这个
activity元素设置在运行时显示这个
activity,现在你可以运行它了。在后面的章节,会看到有多个
activities的工程。
可能还会有一个或者多个
receiver元素,表示在一定条件下,一些非
activites组件需要被触发,例如收到一条短信。这被称作是
intent
receivers,在后续章节会讲到。
可能还会有一个或者多个
provider元素,表示
content providers组件,它们负责提供数据给
activities使用,并且,如果有权限,其它应用程序也可以使用它们提供的数据。它们把数据库或者其它数据存储包装成一个接口
供其它应用程序使用。后续章节会讲怎么创建
content provides和如何使用
content provides。
最后,可能会有一个或者多个
service元素,描述
services-独立于
activity,并且长期运行的一些代码片段。最好的例子就是
mp3播放器,你想边听音乐,边打开其它
activities,这时候
mp3播放器的使用界面被覆盖。后面有两章会讲如何创建和使用
services。