http://hi.baidu.com/zhulin10541/blog/item/580ba8ebffe522d9d539c991.html

转自:http://www.android123.com.cn/androidkaifa/350.html

很多网友对于Android全局配置文件AndroidManifest.xml不是很熟悉,今天我们就一起看下它完整的结构以及每个节点的作用。在我们日常的开发中都少不了下面的配置,每创建一个Activity、Service都离不开这个全局配置文件,深入的了解可以简化程序代码以及提高程序的维护性。

在最外层包含了包名如 package="cn.android123.demo" 、软件的版本号 android:versionCode="1" 以及 android:versionName="1.0" ,里面一层的application分支中将可能包含Android程序的四种对象 Activity、Service、Content Provider以及Receiver。我们每添加上面四个类型中的任一新对象都需要在androidmanifest.xml文件中添加相应节点。

其中Activity的属性常用的可能为android:name和android:label但我们需要了解所有的属性以帮助解决复杂的问题,完整的如下:
android:allowTaskReparenting=["true" | "false"]
android:alwaysRetainTaskState=["true" | "false"]
android:clearTaskOnLaunch=["true"" | "false"]
android:configChanges=[one or more of: "mcc" "mnc" "locale"
"touchscreen" "keyboard" "keyboardHidden"
"navigation" "orientation" "fontScale"]
android:enabled=["true" | "false"]
android:excludeFromRecents=["true" | "false"]
android:exported=["true" | "false"]
android:finishOnTaskLaunch=["true" | "false"]
android:icon="drawable resource"
android:label="string resource"
android:launchMode=["multiple" | "singleTop" |
"singleTask" | "singleInstance"]
android:multiprocess=["true" | "false"]
android:name="string"
android:noHistory=["true" | "false"]
android:permission="string"
android:process="string"
android:screenOrientation=["unspecified" | "user" | "behind" |
"landscape" | "portrait" |
"sensor" | "nonsensor"]
android:stateNotNeeded=["true" | "false"]
android:taskAffinity="string"
android:theme="resource or theme"
android:windowSoftInputMode=[one or more of: "stateUnspecified"
"stateUnchanged" "stateHidden"
"stateAlwaysHidden" "stateVisible"
"stateAlwaysVisible" "adjustUnspecified"
"adjustResize" "adjustPan"] >

有关AndroidManifest.xml文件的application分支我们有必要了解一些常见的属

性,这里可以看到一些我们实用的选项,比如允许 调试android:debuggable、

任务关系android:taskAffinity,比如我们常见的方式创建一个新的任务实用标

记 FLAG_ACTIVITY_NEW_TASK,为程序制定一个主题,可以使用android:theme指

向一个主题文件。

平时我们创建的程序使用一些安全敏感项,会需要请求系统许可权限,这里可以

使用android:permission来制定相关的许可,每个程序的 service、activity、

content provider、receiver都需要在application的节点内实现。有关完整的

属性可以查看:

<application android:allowClearUserData=["true" | "false"]
android:allowTaskReparenting=["true" | "false"]
android:debuggable=["true" | "false"]
android:description="string resource"
android:enabled=["true" | "false"]
android:hasCode=["true" | "false"]
android:icon="drawable resource"
android:label="string resource"
android:manageSpaceActivity="string"
android:name="string"
android:permission="string"
android:persistent=["true" | "false"]
android:process="string"
android:taskAffinity="string"
android:theme="resource or theme" >
. . .
</application>

有关Androidmanifest.xml文件中的数据提供,我们来看下Provider节点中用到

的定义,可以看到包含了权限控制、排序方式完整的如下:

<provider android:authorities="list"
android:enabled=["true" | "false"]
android:exported=["true" | "false"]
android:grantUriPermissions=["true" | "false"]
android:icon="drawable resource"
android:initOrder="integer"
android:label="string resource"
android:multiprocess=["true" | "false"]
android:name="string"
android:permission="string"
android:process="string"
android:readPermission="string"
android:syncable=["true" | "false"]
android:writePermission="string" >
</provider>

而对于服务相关定义如下:

<service android:enabled=["true" | "false"]
android:exported[="true" | "false"]
android:icon="drawable resource"
android:label="string resource"
android:name="string"
android:permission="string"
android:process="string" >
</service>

最后是Broadcast使用的Receiver定义,一般配合<intent-filer> 和<meta-

data>隐式处理。

<receiver android:enabled=["true" | "false"]
android:exported=["true" | "false"]
android:icon="drawable resource"
android:label="string resource"
android:name="string"
android:permission="string"
android:process="string" >
</receiver>

更多相关文章

  1. Android(安卓)Jetpack -- navigation
  2. 最近Android的学习总结
  3. Android(安卓)显示系统 --- Surface Flinger
  4. Android(安卓)应用反编译方法
  5. Optimizing Apps for Android(安卓)3.0
  6. Android(安卓)如何预置APK M
  7. 运行Android程序时 resources.ap_ 文件不存在 的解决办法
  8. Android(安卓)WebView 用法说明
  9. 多线程下载 附源码

随机推荐

  1. Android(安卓)4.0 +MyEclipse 9 整合开发
  2. android java.net.SocketException:Permi
  3. AndroidManifest.xml中的android:exporte
  4. Android(安卓)Camera的代码结构
  5. Android代码之路:BroadcastReceiver初体验
  6. FFmpeg编译MediaCodec
  7. Android(安卓)属性动画ValueAnimator与插
  8. 使用Android系统隐藏api读取*.apk程序安
  9. 使用ndk中的gcc编译Android可执行文件
  10. Android(安卓)BitmapShader的简单使用和