Android 之 AndroidManifest.xml 详解(二)
[10]<activity>
Activity活动组件(即界面控制器组件)的声明标签,Android应用中的每一个Activity都必须在AndroidManifest.xml配置文件中声明,否则系统将不识别也不执行该Activity。另外,<activity>标签还可以包含用于消息过滤的<intent-filter>元素,当然还有可用于存储预定义数据的<meta-data>元素,以下是<activity>标签的语法范例。
<activity android:allowTaskReparenting=["true" | "false"]
android:alwaysRetainTaskState=["true" | "false"]
android:clearTaskOnLaunch=["true" | "false"]
android:configChanges=["mcc", "mnc", "locale","touchscreen", "keyboard", "keyboardHidden",
"navigation", "orientation", "screenLayout","fontScale", "uiMode"]
android:enabled=["true" | "false"]
android:excludeFromRecents=["true" | "false"]
android:exported=["true" | "false"]
android:finishOnTaskLaunch=["true" | "false"]
android:hardwareAccelerated=["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" | "nosensor"]
android:stateNotNeeded=["true" | "false"]
android:taskAffinity="string"
android:theme="resource or theme"
android:windowSoftInputMode=["stateUnspecified","stateUnchanged", "stateHidden","stateAlwaysHidden", "stateVisible",
"stateAlwaysVisible", "adjustUnspecified","adjustResize", "adjustPan"] >
... ...
</activity>
(1)android:allowTaskReparenting=["true" | "false"]:是否允许activity更换从属的任务,比如从短信息任务切换到浏览器任务。
(2)android:alwaysRetainTaskState=["true" | "false"]:是否保留状态不变, 比如切换回home, 再从新打开, activity处于最后的状态 。
(3)android:clearTaskOnLaunch=["true"" | "false"] :比如 P 是 activity, Q 是被P 触发的 activity, 然后返回Home, 从新启动 P, 是否显示 Q 。
(4)android:configChanges=[one or more of: "mcc" "mnc" "locale" "touchscreen" "keyboard" "keyboardHidden" "navigation" "orientation" "fontScale"]:当配置list发生修改时, 是否调用 onConfigurationChanged() 方法 比如 "locale|navigation|orientation".
(5) android:enabled=["true" | "false"]:activity是否可以被实例化。
(6)android:excludeFromRecents=["true" | "false"]:是否可被显示在最近打开的activity列表里。
(7)android:exported=["true" | "false"]:是否允许activity被其它程序调用。
(8)android:finishOnTaskLaunch=["true" | "false"]:是否关闭已打开的activity当用户重新启动这个任务的时候。
(9)android:icon="drawable resource"
(10)android:label="string resource"
(11)android:launchMode=["multiple" | "singleTop" |"singleTask" | "singleInstance"]:activity启动方式, "standard" "singleTop" "singleTask" "singleInstance" 其中前两个为一组, 后两个为一组。
(12)android:multiprocess=["true" | "false"]
(13)android:name="string"
(14)android:noHistory=["true" | "false"]:是否需要移除这个activity当用户切换到其他屏幕时。 这个属性是 API level 3 中引入的
(15)android:permission="string"
(16)android:process="string" 一个activity运行时所在的进程名,所有程序组件运行在应用程序默认的进程中,这个进程名跟应用程序的包名一致。 <application>中的元素process属性能够为所有组件设定一个新的默认值。但是任何组件都可以覆盖这个默认值,允许你 将你的程序放在多进程中运行。 如果这个属性被分配的名字以:开头,当这个activity运行时,一个新的专属于这个程序的 进程将会被创建。如果这个进程名以小写字母开头,这个activity将会运行在全局的进程中,被它的许可所提供。
(17)android:screenOrientation=["unspecified" | "user" | "behind" |"landscape" | "portrait" | "sensor" | "nonsensor"] activity显示的模式, "unspecified" 默认值 "landscape" 风景画模式,宽度比高度大一些 "portrait" 肖像模式, 高度比 宽度大。 "user" 用户的设置 "behind" "sensor" "nosensor"
(18)android:stateNotNeeded=["true" | "false"]:是否 activity被销毁和成功重启并不保存状态 。
(19)android:taskAffinity="string":activity的亲属关系, 默认情况同一个应用程序下的activity有相同的关系。
(20)android:theme="resource or theme":activity的样式主题, 如果没有设置,则activity的主题样式从属于应用程序。
(21)android:windowSoftInputMode=[one or more of: "stateUnspecified""stateUnchanged" "stateHidden" "stateAlwaysHidden" "stateVisible""stateAlwaysVisible""adjustUnspecified""adjustResize" "adjustPan"] >: activity主窗口与软键盘的交互模式, 自从API level 3 被引入。
[11]<activity-alias>
Activity组件别名的声明标签,简单来说就是Activity的快捷方式,属性android:targetActivity表示的就是其相关的Activity名,当然必须是前面已经声明过的Activity。另外,我们还需要注意的是,Activity别名也是一个独立的Activity,可以拥有自己的<intent-filter>和<meta-data>元素。
(1)android:name:Activity别名名称;
(2)android:enabled:别名开关;
(3)android:permission:权限控制等。
其语法范例如下:
<activity-alias android:enabled=["true" | "false"]
android:exported=["true" | "false"]
android:icon="drawable resource"
android:label="string resource"
android:name="string"
android:permission="string"
android:targetActivity="string" >
... ...
</activity-alias>
[12]<intent-filter>与<action>、<category>、<data>
(1)<intent-filter>:用于Intent消息过滤器的声明:<intent-filter>元素可以放在<activity>、<activity-alias>、<service>和<receiver>元素标签中,来区分可用于处理消息的Activity控制器、Service服务和广播接收器Broadcast Receiver。另外,我们还知道Intent消息还包含有名称、动作、数据、类别等几个重要属性。这点与该标签的写法也有一定的关系,以下元素:
1)<action>:<intent-filter>中必须包含有该元素,用于描述具体消息的名称;
2)<category>:用于表示能处理消息组件的类别,即该Action所符合的类别
3)<data>:用于描述消息需要处理的数据格式,我们甚至还可以使用正则表达式来限定数据来源。
下面是标准<intent-filter>元素标签的语法范例:
<intent-filter android:icon="drawable resource"
android:label="string resource"
android:priority="integer" >
<action android:name="string" />
<category android:name="string" />
<data android:host="string"
android:mimeType="string"
android:path="string"
android:pathPattern="string"
android:pathPrefix="string"
android:port="string"
android:scheme="string" />
</intent-filter>
[13]<meta-data>
用于存储预定义数据,和<intent-filter>类似,<meta-data>也可以放在<activity>、<activity-alias>、<service>和<receiver>这四个元素标签中。Meta数据一般会以键值对的形式出现,个数没有限制,而这些数据都将被放到一个Bundle对象中,程序中我们则可以使用ActivityInfo、ServiceInfo甚至ApplicationInfo对象的metaData属性中读取。
假设我们在一个Activity中定义了一个<meta-data>元素,相关示例用法如下:
<activity...>
<meta-data android:name="testData"
android:value="Test Meta Data"></meta-data>
</activity>
后台取值:
ActivityInfo info = this.getPackageManager().getActivityInfo(getComponentName(), PackageManager.GET_META_DATA);
String testData = info.metaData.getString("testData");
System.out.println("testData:" + testData);
[14]<service>
Service服务组件的声明标签,用于定义与描述一个具体的Android服务。
(1)android:name:Service服务类名;
(2)android:icon:服务图标;
(3)android:label:服务描述;
(4)android:enabled:服务开关等。
以下是<service>标签的语法范例:
<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>
[15]<receiver>
Boardcast Receiver广播接收器组件的声明标签,用于定义与描述一个具体的Android广播接收器。
(1)android:name:接收器类名;
(2)android:icon:接收器图标;
(3)android:label:接收器描述;
(4)android:enabled:接收器开关等。
以下是<receiver>标签的语法范例:
<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>
[16]<provider>与<grant-uri-permission>
除Activity、Service和Boardcast Receiver之外的另一个“四大组件”,也就是Content Provider内容提供者的声明标签。
(1)android:name
(2)android:icon
(3)android:label
用于支持其功能的特殊属性:
(4)android:authorities:内容提供者标识名称;
(5)android:grantUriPermission:对指定URI授予权限标识;
(6)android:readPermission和android:writePermission:具体的读、写权限;
以下是<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>
Android 之 AndroidManifest.xml 详解(二)的更多相关文章
- Android 之 AndroidManifest.xml 详解(一)
当Android启动一个应用程序组件之前,它必须知道哪些个组件是存在的,所以开发人员在开发过程中,必须将应用程序中出现的组件一一在AndroidManifest.xml文件中" 声明 &qu ...
- Android——TextView属性XML详解
Android_TextView属性XML详解 博客分类: android 属性名称 描述 android:autoLink 设置是否当文本为URL链接/email/电话号码/map时 ...
- Android AndroidManifest.xml详解
AndroidManifest.xml简述: AndroidManifest.xml 是每个android程序中必须的文件.它位于整个项目的根目录,描述了package中暴露的组件(activitie ...
- AndroidManifest.xml详解(上)
本文编辑整理自:http://blog.163.com/hero_213/blog/static/39891214201242835410742/ 一.关于AndroidManifest.xml ...
- AndroidManifest.xml详解
一.关于AndroidManifest.xml AndroidManifest.xml 是每个android程序中必须的文件.它位于整个项目的根目录,描述了package中暴露的组件(activiti ...
- [android] AndroidManifest.xml 详解
第1部分 标签库+包路径+版本控制 <manifest xmlns:android="http://schemas.android.com/apk/res/android" ...
- AndroidManifest.xml 详解
第1部分 标签库+包路径+版本控制 <manifest xmlns:android="http://schemas.android.com/apk/res/android" ...
- AndroidManifest.xml详解(下)
本文编辑整理自:http://blog.163.com/hero_213/blog/static/39891214201242835410742/ 八.第三层<activity-alias> ...
- Android的事件处理机制详解(二)-----基于监听的事件处理机制
基于监听的事件处理机制 前言: 我们开发的app更多的时候是需要与用户的交互----即对用户的操作进行响应 这就涉及到了android的事件处理机制; android给我们提供了两套功能强大的处理机制 ...
随机推荐
- 河南省队选拔 HAOI2015 解题报告
其实省选在四天前就已经结束了,但由于题目难度略大我到今天上午才补完所有题目……(捂脸逃)考场上很幸运,打完了所有我会写的部分分,最后Round1的110分 + Round2的70分,勉强算是没有被 ...
- maven -- 问题解决(一)解决eclipse中maven项目配置过程和maven install时出现的问题
问题一: 配置项目时出现的错误: error: Cannot change version of project facet Dynamic Web Module to 2.5. error: One ...
- Codeforces Round #281 (Div. 2) D. Vasya and Chess 镜面对称 博弈论
D. Vasya and Chess time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- centos7 通过kvm+vnc 实现远程桌面虚拟化和创建windows、Linux虚拟机
感谢朋友支持本博客.欢迎共同探讨交流,因为能力和时间有限.错误之处在所难免,欢迎指正! 假设转载.请保留作者信息. 博客地址:http://blog.csdn.net/qq_21398167 原博文地 ...
- shell中的括号(小括号,中括号,大括号)及单引号、 双引号,反引号(``)
一.小括号,园括号() 1.单小括号 () ①命令组.括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用.括号中多个命令之间用分号隔开,最后一个命令可以没有分号, ...
- 求平方根C++
求平方根,正根.曾经都不会.昨天看数学,看到了,写了出来.自己又小优化了一下,非常不错. // squareRoot.cpp -- 2011-08-29-01.04 #include "st ...
- jsondataobjects
jsondataobjects GITHUB: https://github.com/ahausladen/jsondataobjects.git 跨平台JSON库 Json Data Objects ...
- [转载]Unity3D游戏引擎最详尽基础教程
原文地址:Unity3D游戏引擎最详尽基础教程作者:ShangShang 我一直向所有想做游戏的朋友推荐Unity3D,为什么呢?首先是因为专业,Unity3D非常强大,用它创建一个类似MiniGor ...
- windowsmobile 开发环境
Windows Mobile 6开发环境的配置过程 需要的文件列表:1.Visual Studio 2005 Professional及更高的版本(Visual Studio 2005 Express ...
- Selenium2+python自动化39-关于面试的题
前言 最近看到群里有小伙伴贴出一组面试题,最近又是跳槽黄金季节,小编忍不住抽出一点时间总结了下, 回答不妥的地方欢迎各位高手拍砖指点. 一.selenium中如何判断元素是否存在? 首先selen ...