AndroidManifestxml文件解析Word格式文档下载.docx

上传人:b****5 文档编号:16693647 上传时间:2022-11-25 格式:DOCX 页数:15 大小:26.17KB
下载 相关 举报
AndroidManifestxml文件解析Word格式文档下载.docx_第1页
第1页 / 共15页
AndroidManifestxml文件解析Word格式文档下载.docx_第2页
第2页 / 共15页
AndroidManifestxml文件解析Word格式文档下载.docx_第3页
第3页 / 共15页
AndroidManifestxml文件解析Word格式文档下载.docx_第4页
第4页 / 共15页
AndroidManifestxml文件解析Word格式文档下载.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

AndroidManifestxml文件解析Word格式文档下载.docx

《AndroidManifestxml文件解析Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《AndroidManifestxml文件解析Word格式文档下载.docx(15页珍藏版)》请在冰豆网上搜索。

AndroidManifestxml文件解析Word格式文档下载.docx

uses-permission/>

permission/>

permission-tree/>

permission-group/>

instrumentation/>

uses-sdk/>

uses-configuration/>

uses-feature/>

supports-screens/>

/manifest>

三、各个节点的详细介绍

上面就是整个am(androidManifest).xml的结构,下面以外向内开始阐述~~

1、第一层(<

Manifest>

):

(属性)

manifestxmlns:

android="

package="

com.woody.test"

android:

sharedUserId="

string"

sharedUserLabel="

stringresource"

versionCode="

integer"

versionName="

installLocation=["

auto"

|"

internalOnly"

preferExternal"

]>

A、xmlns:

android

定义android命名空间,一般为

B、package

指定本应用内java主程序包的包名,它也是一个应用进程的默认名称

C、sharedUserId

表明数据权限,因为默认情况下,Android给每个APK分配一个唯一的UserID,所以是默认禁止不同APK访问共享数据的。

若要共享数据,第一可以采用SharePreference方法,第二种就可以采用sharedUserId了,将不同APK的sharedUserId都设为一样,则这些APK之间就可以互相共享数据了。

详见:

D、sharedUserLabel

一个共享的用户名,它只有在设置了sharedUserId属性的前提下才会有意义

E、versionCode

是给设备程序识别版本(升级)用的必须是一个interger值代表app更新过多少次,比如第一版一般为1,之后若要更新版本就设置为2,3等等。

F、versionName

这个名称是给用户看的,你可以将你的APP版本号设置为1.1版,后续更新版本设置为1.2、2.0版本等等。

G、installLocation

安装参数,是Android2.2中的一个新特性,installLocation有三个值可以选择:

internalOnly、auto、preferExternal

选择preferExternal,系统会优先考虑将APK安装到SD卡上(当然最终用户可以选择为内部ROM存储上,如果SD存储已满,也会安装到内部存储上)

选择auto,系统将会根据存储空间自己去适应

选择internalOnly是指必须安装到内部才能运行

(注:

需要进行后台类监控的APP最好安装在内部,而一些较大的游戏APP最好安装在SD卡上。

现默认为安装在内部,如果把APP安装在SD卡上,首先得设置你的level为8,并且要配置android:

installLocation这个参数的属性为preferExternal)

2、第二层(<

Application>

属性

一个AndroidManifest.xml中必须含有一个Application标签,这个标签声明了每一个应用程序的组件及其属性(如icon,label,permission等)

applicationandroid:

allowClearUserData=["

true"

false"

]

allowTaskReparenting=["

backupAgent="

debuggable=["

description="

enabled=["

hasCode=["

icon="

drawableresource"

killAfterRestore=["

label="

manageSpaceActivity="

name="

permission="

persistent=["

process="

restoreAnyVersion=["

taskAffinity="

theme="

resourceortheme"

>

A、android:

allowClearUserData('

true'

or'

false'

用户是否能选择自行清除数据,默认为true,程序管理器包含一个选择允许用户清除数据。

当为true时,用户可自己清理用户数据,反之亦然

B、android:

allowTaskReparenting('

是否允许activity更换从属的任务,比如从短信息任务切换到浏览器任务

C、android:

backupAgent

这也是Android2.2中的一个新特性,设置该APP的备份,属性值应该是一个完整的类名,如com.project.TestCase,此属性并没有默认值,并且类名必须得指定(就是个备份工具,将数据备份到云端的操作)

D、android:

debuggable

这个从字面上就可以看出是什么作用的,当设置为true时,表明该APP在手机上可以被调试。

默认为false,在false的情况下调试该APP,就会报以下错误:

DeviceXXXrequiresthatapplicationsexplicitelydeclarethemselvesasdebuggableintheirmanifest.

ApplicationXXXdoesnothavetheattribute'

debuggable'

settoTRUEinitsmanifestandcannotbedebugged.

E、android:

description/android:

label

此两个属性都是为许可提供的,均为字符串资源,当用户去看许可列表(android:

label)或者某个许可的详细信息(android:

description)时,这些字符串资源就可以显示给用户。

label应当尽量简短,之需要告知用户该许可是在保护什么功能就行。

而description可以用于具体描述获取该许可的程序可以做哪些事情,实际上让用户可以知道如果他们同意程序获取该权限的话,该程序可以做什么。

我们通常用两句话来描述许可,第一句描述该许可,第二句警告用户如果批准该权限会可能有什么不好的事情发生

F、android:

enabled

Android系统是否能够实例化该应用程序的组件,如果为true,每个组件的enabled属性决定那个组件是否可以被enabled。

如果为false,它覆盖组件指定的值;

所有组件都是disabled。

G、android:

hasCode('

表示此APP是否包含任何的代码,默认为true,若为false,则系统在运行组件时,不会去尝试加载任何的APP代码

一个应用程序自身不会含有任何的代码,除非内置组件类,比如Activity类,此类使用了AliasActivity类,当然这是个罕见的现象

(在Android2.3可以用标准C来开发应用程序,可在androidManifest.xml中将此属性设置为false,因为这个APP本身已经不含有任何的JAVA代码了)

H、android:

icon

这个很简单,就是声明整个APP的图标,图片一般都放在drawable文件夹下

I、android:

killAfterRestore

J、android:

manageSpaceActivity

K、android:

name

为应用程序所实现的Application子类的全名。

当应用程序进程开始时,该类在所有应用程序组件之前被实例化。

若该类(比方androidMain类)是在声明的package下,则可以直接声明android:

androidMain"

但此类是在package下面的子包的话,就必须声明为全路径或android:

package名称.子包名成.androidMain"

L、android:

permission

设置许可名,这个属性若在<

上定义的话,是一个给应用程序的所有组件设置许可的便捷方式,当然它是被各组件设置的许可名所覆盖的

M、android:

presistent

该应用程序是否应该在任何时候都保持运行状态,默认为false。

因为应用程序通常不应该设置本标识,持续模式仅仅应该设置给某些系统应用程序才是有意义的。

N、android:

process

应用程序运行的进程名,它的默认值为<

元素里设置的包名,当然每个组件都可以通过设置该属性来覆盖默认值。

如果你想两个应用程序共用一个进程的话,你可以设置他们的android:

process相同,但前提条件是他们共享一个用户ID及被赋予了相同证书的时候

O、android:

restoreAnyVersion

同样也是android2.2的一个新特性,用来表明应用是否准备尝试恢复所有的备份,甚至该备份是比当前设备上更要新的版本,默认是false

P、android:

taskAffinity

拥有相同的affinity的Activity理论上属于相同的Task,应用程序默认的affinity的名字是<

元素中设定的package名

Q、android:

theme

是一个资源的风格,它定义了一个默认的主题风格给所有的activity,当然也可以在自己的theme里面去设置它,有点类似style。

3、第三层(<

Activity>

activityandroid:

alwaysRetainTaskState=["

clearTaskOnLaunch=["

configChanges=["

mcc"

"

mnc"

locale"

"

touchscreen"

keyboard"

keyboardHidden"

navigation"

orientation"

screenLayout"

fontScale"

uiMode"

excludeFromRecents=["

exported=["

finishOnTaskLaunch=["

launchMode=["

multiple"

singleTop"

|

singleTask"

singleInstance"

multiprocess=["

noHistory=["

]

screenOrientation=["

unspecified"

user"

behind"

landscape"

portrait"

sensor"

nosensor"

stateNotNeeded=["

windowSoftInputMode=["

stateUnspecified"

stateUnchanged"

stateHidden"

stateAlwaysHidden"

stateVisible"

stateAlwaysVisible"

adjustUnspecified"

adjustResize"

adjustPan"

有些在application中重复的就不多阐述了)

1、android:

alwaysRetainTaskState

是否保留状态不变,比如切换回home,再从新打开,activity处于最后的状态。

比如一个浏览器拥有很多状态(当打开了多个TAB的时候),用户并不希望丢失这些状态时,此时可将此属性设置为true

2、android:

clearTaskOnLaunch

比如P是activity,Q是被P触发的activity,然后返回Home,重新启动P,是否显示Q

3、android:

configChanges

当配置list发生修改时,是否调用onConfigurationChanged()方法比如"

locale|navigation|orientation"

.

这个我用过,主要用来看手机方向改变的.android手机在旋转后,layout会重新布局,如何做到呢?

正常情况下.如果手机旋转了.当前Activity后杀掉,然后根据方向重新加载这个Activity.就会从onCreate开始重新加载.

如果你设置了这个选项,当手机旋转后,当前Activity之后调用onConfigurationChanged()方法.而不跑onCreate方法等.

4、android:

excludeFromRecents

是否可被显示在最近打开的activity列表里,默认是false

5、android:

finishOnTaskLaunch

当用户重新启动这个任务的时候,是否关闭已打开的activity,默认是false

如果这个属性和allowTaskReparenting都是true,这个属性就是王牌。

Activity的亲和力将被忽略。

该Activity已经被摧毁并非re-parented

6、android:

launchMode(Activity加载模式)

在多Activity开发中,有可能是自己应用之间的Activity跳转,或者夹带其他应用的可复用Activity。

可能会希望跳转到原来某个Activity实例,而不是产生大量重复的Activity。

这需要为Activity配置特定的加载模式,而不是使用默认的加载模式

Activity有四种加载模式:

standard、singleTop、singleTask、singleInstance(其中前两个是一组、后两个是一组),默认为standard

standard:

就是intent将发送给新的实例,所以每次跳转都会生成新的activity。

singleTop:

也是发送新的实例,但不同standard的一点是,在请求的Activity正好位于栈顶时(配置成singleTop的Activity),不会构造新的实例

singleTask:

和后面的singleInstance都只创建一个实例,当intent到来,需要创建设置为singleTask的Activity的时候,系统会检查栈里面是否已经有该Activity的实例。

如果有直接将intent发送给它。

singleInstance:

首先说明一下task这个概念,Task可以认为是一个栈,可放入多个Activity。

比如启动一个应用,那么Android就创建了一个Task,然后启动这个应用的入口Activity,那在它的界面上调用其他的Activity也只是在这个task里面。

那如果在多个task中共享一个Activity的话怎么办呢。

举个例来说,如果开启一个导游服务类的应用程序,里面有个Activity是开启GOOGLE地图的,当按下home键退回到主菜单又启动GOOGLE地图的应用时,显示的就是刚才的地图,实际上是同一个Activity,实际上这就引入了singleInstance。

singleInstance模式就是将该Activity单独放入一个栈中,这样这个栈中只有这一个Activity,不同应用的intent都由这个Activity接收和展示,这样就做到了共享。

当然前提是这些应用都没有被销毁,所以刚才是按下的HOME键,如果按下了返回键,则无效

7、android:

multiprocess

是否允许多进程,默认是false

具体可看该篇文章:

http:

//www.bangchui.org/simple/?

t3181.html

8、android:

noHistory

当用户从Activity上离开并且它在屏幕上不再可见时,Activity是否从Activitystack中清除并结束。

默认是false。

Activity不会留下历史痕迹

9、android:

screenOrientation

activity显示的模式

默认为unspecified:

由系统自动判断显示方向

landscape横屏模式,宽度比高度大

portrait竖屏模式,高度比宽度大

user模式,用户当前首选的方向

behind模式:

和该Activity下面的那个Activity的方向一致(在Activity堆栈中的)

sensor模式:

有物理的感应器来决定。

如果用户旋转设备这屏幕会横竖屏切换

nosensor模式:

忽略物理感应器,这样就不会随着用户旋转设备而更改了

10、android:

stateNotNeeded

activity被销毁或者成功重启时是否保存状态

11、android:

windowSoftInputMode

activity主窗口与软键盘的交互模式,可以用来避免输入法面板遮挡问题,Android1.5后的一个新特性。

这个属性能影响两件事情:

【A】当有焦点产生时,软键盘是隐藏还是显示

【B】是否减少活动主窗口大小以便腾出空间放软键盘

各值的含义:

【A】stateUnspecified:

软键盘的状态并没有指定,系统将选择一个合适的状态或依赖于主题的设置

【B】stateUnchanged:

当这个activity出现时,软键盘将一直保持在上一个activity里的状态,无论是隐藏还是显示

【C】stateHidden:

用户选择activity时,软键盘总是被隐藏

【D】stateAlwaysHidden:

当该Activity主窗口获取焦点时,软键盘也总是被隐藏的

【E】stateVisible:

软键盘通常是可见的

【F】stateAlwaysVisible:

用户选择activity时,软键盘总是显示的状态

【G】adjustUnspecified:

默认设置,通常由系统自行决定是隐藏还是显示

【H】adjustResize:

该Activity总是调整屏幕的大小以便留出软键盘的空间

【I】adjustPan:

当前窗口的内容将自动移动以便当前焦点从不被键盘覆盖和用户能总是看到输入内容的部分

4、第四层(<

结构图:

intent-filterandroid:

priority="

action/>

category/>

data/>

intent-filter属性

android:

priority(解释:

有序广播主要是按照声明的优先级别,如A的级别高于B,那么,广播先传给A,再传给B。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1