AndroidManifest.xml是每个Android程序中必须的文件,它是整个Android程序的全局描述文件,除了能声明程序中的Activities,Content Providers,Services,和Intent Receivers,还能指定应用的名称、使用的图标、包含的组件以及permissions和instrumentation(安全控制和测试)。下面是一个简单的分析:

第一层:(manifest)

起始的是xml文件自动生成的头文件。manifest的主要属性有:

- xmlns:android = “xmlns:android=”http://schemas.android.com/apk/res/android”” 一般都是这样定义的,定义了Android的命名空间,这样使得Android中各种标准属性能在文件中使用

- package=”” 项目的包名

- android:versionCode=”” 给设备程序识别版本(升级)用的,刚开始是1,升级一次就是2,3,4...等等

- android:versionName=”” 这个名称是给用户看的,APP版本号是可以自行设置的,起始可以使1.1,后续更新版本设置为1.2、1.3版本等等

第二层:(application)

- android:allowClearUserData=”true” | “false” 用户是否能选择自行清除数据,默认为true。当为true时,用户可自己清理用户数据,反之亦然

- android:allowTaskReparenting=”true” | “false” 用户是否被允许从一个任务跳转至另一个任务,默认是true

- android:label=”” 此属性是为许可提供的,label主要是用以描述许可是在保护什么功能,还有一个description属性,也是描述许可的。值是字符串类型,一般来自资源String文件

- android:icon=”” 描述程序的图标,值来自资源drawable文件夹

在Android开发中,我们可以通过设置不同的属性来定义应用程序的主题风格、数据备份与恢复功能、Activity的保留状态以及Intent-Filter的操作。下面是关于这些属性的详细解释:

1. android:theme属性:这个属性用于定义所有Activity的主题风格,可以在自己的主题(theme)里面设置。

2. android:allowBackup属性:这个属性控制应用程序的数据备份和恢复功能。默认值为true,用户可以通过adb backup和adb restore对应用数据进行备份和恢复,但存在一定的风险。

3. android:alwaysRetainTaskState属性:这个属性决定是否保留最后一次退出activity时的状态。默认值为false。

4. android:configChanges属性:当设置这个值后,在手机屏幕发生改变时,不会杀掉当前布局文件,而是直接调用当前Activity的onConfigurationChanged()方法。这样可以避免因屏幕旋转而导致的布局重绘问题。

5. android:screenOrientation属性:这个属性用于设置屏幕的方向。默认值为unspecified,由系统自动判断显示方向。常见的取值有landscape(横屏模式)、portrait(竖屏模式)、user(用户当前首选的方向)、behind(与该Activity下面的那个Activity的方向一致)和sensor(有物理感应器决定)。

6. android:name属性:这是Intent-Filter中的一个常用属性,表示要执行的操作类型。常见的值有:MAIN(作为应用程序入口)、VIEW(根据不同的Data类型,通过已注册的对应Application显示数据)、EDIT(根据不同的Data类型,通过已注册的对应Application编辑数据)、DIAL(打开系统默认的拨号程序)、CALL(直接呼叫Data中所带的号码)和ANSWER(接听来电)。

通过以上属性的设置,我们可以更好地控制应用程序的行为和用户体验。

在Android中,有两种发送数据的操作:android.intent.action.SEND和android.intent.action.SENDTO。前者由用户指定发送方式进行数据发送操作,后者则根据不同的Data类型,通过已注册的对应Application进行数据发送操作。

在这两种操作中,都涉及到一个名为category的属性。这个属性只有android:name属性,常见的值有以下几种:

1. android.intent.category.LAUNCHER:设置该组件为在当前应用程序启动器中优先级最高的Activity,通常为入口ACTION_MAIN配合使用。

2. android.intent.category.DEFAULT:Android系统中默认的执行方式,按照普通Activity的执行方式执行。

3. android.intent.category.HOME:设置该组件为Home Activity。

4. android.intent.category.PREFERENCE:设置该组件为Preference。

5. android.intent.category.BROWSABLE:设置该组件可以使用浏览器启动。

6. android.intent.category.GADGET:设置该组件可以内嵌到另外的Activity中。

此外,还有一个名为data的属性,每个data元素指定一个URI和数据类型(MIME类型)。它有四个属性scheme、host、port、path对应于URI的每个部分:scheme://host:port/path。scheme的值一般为”http”,host为包名,port为端口号,path为具体地址。其中host和port合起来构成URI的凭据(authority),如果host没有指定,则port也会被忽略。要让authority有意义,scheme也必须要指定。要让path有意义,scheme+authority也必须要指定。而pathPattern和PathPrefix主要是为了格式化path所使用的。

在一个activity里面,可以包含多个intent-filter,它们之间的设置属性是不一样的。这些属性的目的是为activity提供显示和隐示访问的机制。

接下来,我们来看第四层(meta-data)的内容。这个层次可以包含在activity、activity-alias、service、receiver四个元素中。

最后,我们来看第三层(activity-alias)的内容。

Android中,有五种基本组件,分别是Activity、Service、BroadcastReceiver、ContentProvider和IntentFilter。这些组件在Android开发中扮演着不同的角色,用于实现各种功能。下面我们将详细介绍这五种基本组件的使用方法和特点。

1. Activity(活动):Activity是用户界面的主要组成部分,它代表了一个屏幕上的窗口。每个Activity都有自己的名字,当用户点击一个Activity时,系统会将其启动并显示在屏幕上。为了给其他应用程序提供快捷方式,可以为Activity创建快捷方式,但这种用法相对不常用。

2. Service(服务):Service是一种在后台运行的程序,它不能与用户直接交互,而是通过调用Intent来实现与Activity之间的通信。Service的生命周期包括onCreate()、onStart()和onDestroy()三个方法。当Service启动时,会依次调用这三个方法;当Service停止时,会执行onDestroy()方法。如果Service已经启动了,再次启动时将不会执行onCreate()方法,而是直接执行onStart()方法。

3. BroadcastReceiver(广播接收器):BroadcastReceiver用于发送广播,它是在应用程序之间传输信息的一种机制。BroadcastReceiver会对发送出来的广播进行过滤、接收并响应,从而实现与其他应用程序或系统的交互。

4. ContentProvider(内容提供者):ContentProvider是一种用于共享数据的组件,它可以让一个应用程序向其他应用程序或系统提供数据。通过ContentProvider,可以在不同的应用程序之间共享和访问数据。

5. IntentFilter(意图过滤器):IntentFilter用于过滤和匹配Intent,它可以根据特定的条件来筛选出符合条件的Intent。这样可以实现对Intent的精确控制和管理。

此外,还有一层层次结构需要注意,那就是:uses-library、supports-screens、uses-sdk、permission、uses-permission、permission-tree和permission-group。这些层级关系用于配置和管理Android应用程序的各种属性和设置。