小艾笔记——AndroidManifest.xml分析
来源:互联网 发布:淘宝杜蕾斯授权店 编辑:程序博客网 时间:2024/05/24 00:49
Android—— AndroidManifest.xml简单分析
AndroidManifest.xml 是每个android程序中必须的文件。我们称之为清单文件,它位于整个项目的根目录,随着项目建立的时候自动生成。标准的.xml文件,内容有着严格的层次结构,又开始标签就必须存在结束标签,这里不做解释。由于分析项目的时候遇到了清单文件的相应节点不熟悉,就再此给自己的做一下总结。
AndroidManifest.xml的总体结构
<?xmlversion="1.0"encoding="utf-8"?><manifest> <application> <activity> <intent-filter> <action/> <category/> </intent-filter> </activity> <activity-alias> <intent-filter></intent-filter> <meta-data/> </activity-alias> <service> <intent-filter></intent-filter> <meta-data/> </service> <receiver> <intent-filter></intent-filter> <meta-data/> </receiver> <provider> <grant-uri-permission/> <meta-data/> </provider> <uses-library/> </application> <uses-permission/> <permission/> <permission-tree/> <permission-group/> <instrumentation/> <uses-sdk/> <uses-configuration/> <uses-feature/> <supports-screens/></manifest>
各节点的简介
我这里介绍的每个节点的属性并不完整,仅仅是我当前项目有的一些和我自己补充的一些。主要介绍常用的,不常用的遇到的话可自行百度。
第一层:(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:theme=”” 定义了一个默认的主题风格给所有的activity,风格可以在自己的theme里面去设置它
- android:allowBackup=”true”|”false” 应用程序的数据备份和恢复的功能,默认是true,用户可以通过adb backup和adb restore进行对应用数据的备份和恢复,存在一定的风险
第三层:(activity)
- android:alwaysRetainTaskState=”true”|”false” 是否保留最后一次退出activity时的状态
- android:configChanges=”” 如果在设置这个值后,在手机的屏幕发生改变的时候不会杀掉当前的布局文件,重新加载oncreate方法,而是当前Activity直接调用onConfigurationChanged() 方法
- android:screenOrientation=”” 默认为unspecified:由系统自动判断显示方向;landscape横屏模式,宽度比高度大;portrait竖屏模式, 高度比宽度大;user模式,用户当前首选的方向;behind模式:和该Activity下面的那个Activity的方向一致(在Activity堆栈中的);sensor模式:有物理的感应器来决定。如果用户旋转设备这屏幕会横竖屏切换;nosensor模式:忽略物理感应器,这样就不会随着用户旋转设备而更改了
第四层:(intent-filter)
action属性:只有android:name这个属性。常见的值有:
android.intent.action.MAIN:表明此activity是作为应用程序的入口
android.intent.action.VIEW:系统根据不同的Data类型,通过已注册的对应Application显示数据
android.intent.action.EDIT:系统根据不同的Data类型,通过已注册的对应Application编辑示数据
android.intent.action.DIAL:打开系统默认的拨号程序,如果Data中设置了电话号码,则自动在拨号程序中输入此号码
android.intent.action.CALL:直接呼叫Data中所带的号码
android.intent.action.ANSWER:接听来电
android.intent.action.SEND:由用户指定发送方式进行数据发送操作
android.intent.action.SENDTO:系统根据不同的Data类型,通过已注册的对应Application进行数据发送操作category属性:只有android:name属性。常见的值有:
android.intent.category.LAUNCHER:设置该组件为在当前应用程序启动器中优先级最高的Activity,通常为入口ACTION_MAIN配合使用。
android.intent.category.DEFAULT:Android系统中默认的执行方式,按照普通Activity的执行方式执行
android.intent.category.HOME:设置该组件为Home Activity
android.intent.category.PREFERENCE:设置该组件为Preference
android.intent.category.BROWSABLE:设置该组件可以使用浏览器启动
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四个元素中
<meta-data android:name="string" 元数据项的名字 android:resource="resource specification" 资源的一个引用,指定给这个项的值是该资源的id android:value="string"/> 指定给这一项的值
第三层:(activity-alias)
是为activity创建快捷方式的,具体的应该不常用,我很少遇见,这里不做详细描述
第三层:(service)
与activity同级,不能自己启动的,运行在后台的程序,如果我们退出应用时,Service进程并没有结束,它仍然在后台运行。比如听音乐,网络下载数据等,都是由service运行的
service的生命周期:onCreate(),onStart(),onDestroy()三个方法,第一次启动Service时,先后调用了onCreate(),onStart()这两个方法,当停止Service时,则执行onDestroy()方法,如果Service已经启动了,当我们再次启动Service时,不会在执行onCreate()方法,而是直接执行onStart()方法
service与activity间的通信:Activity与service间的通信主要用IBinder负责
第三层:(receiver)
BroadcastReceiver:用于发送广播,broadcast是在应用程序之间传输信息的一种机制,而BroadcastReceiver是对发送出来的 Broadcast进行过滤接受并响应的一类组件
第三层:(provider)
我没怎么遇见过,这里不描述了
第三层:(uses-library)
用于引用可自定义的用户库、所有android的包
第一层:(supports-screens)
<supports-screens android:smallScreens="true"|"false" android:normalScreens="true"|"false" android:largeScreens="true"|"false" android:anyDensity="true"|"false" />
四个属性,是否支持大屏,是否支持中屏,是否支持小屏,是否支持多种不同密度
第二层:(uses-sdk)
描述应用所需的api level,就是版本
<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="21" android:maxSdkVersion="21"/>
第一层:(permission、uses-permission、permission-tree、permission-group )
最常用的是uses-permission,为应用程序提供相应的权限,区别也就不做对比了
uses-feature:过滤所有你设备不支持的应用
- 小艾笔记——AndroidManifest.xml分析
- Andriod学习笔记4——AndroidManifest.xml分析
- AndroidManifest.xml代码分析(笔记)
- 安卓笔记—AndroidManifest.xml文件详解
- AndroidManifest.xml分析
- AndroidManifest.xml分析
- AndroidManifest.xml分析
- AndroidManifest.xml简单分析
- AndroidManifest.xml文件分析
- AndroidManifest.xml详解分析
- AndroidManifest.xml详细分析
- AndroidManifest.xml——application
- AndroidManifest.xml——category
- AndroidManifest.xml——data
- AndroidManifest.xml——instrumentation
- AndroidManifest.xml——manifest
- AndroidManifest.xml——permission
- AndroidManifest.xml——service
- 数据库的唯一索引
- Android图片压缩(质量压缩和尺寸压缩)&Bitmap转成字符串上传
- 关于Socket通讯时通讯协议的制定
- shell中的判断与循环
- Servlet
- 小艾笔记——AndroidManifest.xml分析
- python调用dll动态库
- caffe学习笔记(五)--使用自己的数据集第一次进行训练
- 对于初学编程的一些建议
- angularjs开篇
- 正则表达式30分钟入门教程
- spring DelegatingFilterProxy 过滤器 的原理及运用
- android手机获取手机设备信息
- Linux下高效编写Shell——shell特殊字符汇总