电子工程专辑互动社区>自由讨论>嵌入式系统专区>AndroidManifest.xml文件剖析(上)
作者 问题:

AndroidManifest.xml文件剖析(上)

发布时间:2012-9-6 下午2:38

作者: farsightemb

等级: 初入江湖

积分: 166分

发帖数: 13次

网站总积分: 170分

经验值: 0.0

查看用户的所有发言

查看用户的个人e空间

需要确认注册邮箱后才能下载,立即确认我的邮箱
回复后可下载附件 关闭

作者:温尚书,华清远见嵌入式学院讲师。

Android应用开发中,少不了要用到AndroidManifest.xml对应用进行基本的配置。很多同学对于Android配置文件AndroidManifest.xml不是很熟悉,今天就给大家解释一下它完整的结构以及每个节点的作用。

在最顶层节点(根节点)包含了包名如 package="cn.com.farsight.game" 、软件的版本号android:versionCode="1" 以及android:versionName="1.0" ,其子节点application分支中将可能包含Android程序的四种对象 Activity、Service、Content Provider以及Receiver(即所谓的Android四大组件的定义)。我们每添加上面四个类型中的任一新对象都需要在androidmanifest.xml文件中添加相应节点。

有关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"]--应用定义的activities是否可以被从启动的任务转移到和他有相同并且将被带到前台的任务。

android:debuggable=["true" | "false"]--应用是否可以使用debug,甚至运行在用户模式下。

android:description="string resource"--用户可读的,比应用标签更长、更多的应用描述。

android:enabled=["true" | "false"]-- Android系统是否可以实例化应用的组件。

android:hasCode=["true" | "false"]-- 应用是否包含代码。

android:icon="drawable resource"--整个应用的图标,还是每个组件的默认图标。

android:label="string resource"--应用标签

android:manageSpaceActivity="string"--一个Activity子类的全限定名称,这个Activity可以被系统启动让用户管理此应用占有的存储空间。

android:name="string"--为这个应用实现的Application子类的全限定名称。

android:permission="string"--客户为了和应用交互必须设置的许可的名称。

android:persistent=["true" | "false"]--应用是否在所有时间下都保持运行。

android:process="string"--为应用下的组件定一个运行进程名称。

android:taskAffinity="string"--提供给应用下所有组件的类同名称,除了设置了自己的taskAffinity属性的组件。

android:theme="resource or theme"--整个应用的主题

>

. . .

</application>

其中Activity的属性常用的可能为android:name和android:label但我们需要了解所有的属性以帮助解决复杂的问题,完整的属性如下:

android:allowTaskReparenting=["true" | "false"]--是否允许activity更换从属的任务,比如从A任务切换到B任务。

android:alwaysRetainTaskState=["true" | "false"]--是否保留状态不变, 比如切换回Home, 再重新打开, activity处于最后的状态

android:clearTaskOnLaunch=["true"" | "false"]--比如 P 是 activity, Q 是被P 触发的 activity, 然后返回Home, 从新启动 P, 是否显示 Q

android:configChanges=[one or more of: "mcc" "mnc" "locale"

"touchscreen" "keyboard" "keyboardHidden"

"navigation" "orientation" "fontScale"]--当配置发生修改时, 是否调用 onConfigurationChanged() 方法。各个配置之间用"|"隔开

android:enabled=["true" | "false"]--是否可以被实例化

android:excludeFromRecents=["true" | "false"]--是否可被显示在最近打开的activity列表里

android:exported=["true" | "false"]--是否允许activity被其它程序调用

android:finishOnTaskLaunch=["true" | "false"]--当用户重新启动这个任务的时候是否关闭已打开的activity

android:icon="drawable resource"--图标

android:label="string resource"--出现在标题中的标签文字

android:launchMode=["multiple" | "singleTop" |

"singleTask" | "singleInstance"]--启动模式

android:multiprocess=["true" | "false"]--是否允许多进程

android:name="string"--对应的Activity类,必须指定

android:noHistory=["true" | "false"] --当用户切换到其他屏幕时是否需要移除这个activity

android:permission="string"--设置权限

android:process="string"--一个activity运行时所在的进程名,所有程序组件运行在应用程序默认的进程中,这个进程名跟应用程序的包名一致。

android:screenOrientation=["unspecified" | "user" | "behind" |"landscape" | "portrait" | "sensor" | "nonsensor"]--activity显示的模式, "unspecified" 默认值 ,"landscape" 横屏模式,宽度比高度大一些 "portrait" 竖屏模式。

android:stateNotNeeded=["true" | "false"]--当activity被销毁和成功重启时是否保存状态

android:taskAffinity="string"--activity的亲属关系, 默认情况同一个应用程序下的activity有相同的关系

android:theme="resource or theme" --activity的样式主题, 如果没有设置,则activity的主题样式从属于应用程序

android:windowSoftInputMode=[one or more of: "stateUnspecified"

"stateUnchanged" "stateHidden"

"stateAlwaysHidden" "stateVisible"

"stateAlwaysVisible" "adjustUnspecified"

"adjustResize" "adjustPan"] > --activity主窗口与软键

???标签: st
引用 回复 鲜花 ( 0) 臭鸡蛋 ( 0) 有新回复时发送邮件通知
S5PC100 DMAC简述????下一帖??

与?st?相关的话题
?
快速回复
用户名:?
美国的游客?????? (您将以游客身份发表,请登陆 | 注册 ) ?
标题: * 你还可以输入80
评论: * 你还可以输入10000
分享到: 新浪微博?? qq空间?? qq微博?? 人人网?? 百度搜藏??
验证码: ?*?
维护专业、整洁的论坛环境需要您的参与,请及时举报违规帖子,如果举报属实,我们将给予相应的积分奖励。
谢谢您的热心参与!
返回嵌入式系统专区 | 返回自由讨论
本论坛仅陈述专家或个人观点,并不代表电子工程专辑网站立场。
返回论坛页首
有问题请反馈