分享

赵雅智

 kiki的号 2017-04-10
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <!-- <manifest>  
  3. <manifest>AndroidManifest.xml配置文件的根元素,  
  4. 必须包含一个<application>元素并且指定xlmns:android和package属性。  
  5. xlmns:android指定了Android的命名空间,默认情况下是“http://schemas./apk/res/android”;  
  6. package是标准的应用包名,也是一个应用进程的默认名称,我们为了避免命名空间的冲突,一般会以应用的域名来作为包名。  
  7. android:versionCode是给设备程序识别版本用的,必须是一个整数值代表app更新过多少次;  
  8. android:versionName则是给用户查看版本用的,需要具备一定的可读性,  
  9. -->  
  10. <manifest xmlns:android="http://schemas./apk/res/android"  
  11.     package="com.example.android_activitylife"  
  12.     android:versionCode="1"  
  13.     android:versionName="1.0" >  
  14. <!-- <uses-permission>  
  15. 为了保证Android应用的安全性,应用框架制定了比较严格的权限系统,一个应用必须声明了正确的权限才可以使用相应的功能  
  16. 例如我们需要让应用能够访问网络就需要配置“android.permission.INTERNET”  
  17. 而如果要使用设备的相机功能,则需要设置“android.permission.CAMERA”等。  
  18. <uses-permission>就是我们最经常使用的权限设定标签,  
  19. android:name属性来声明相应的权限名,  
  20.  -->  
  21.  <!-- 网络相关功能 -->  
  22.     <uses-permission android:name="android.permission.INTERNET" />  
  23.     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />  
  24.     <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />  
  25.     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />  
  26.     <!-- 读取电话状态 -->  
  27.     <uses-permission android:name="android.permission.READ_PHONE_STATE"/>  
  28.     <!-- 通知相关功能 -->  
  29.     <uses-permission android:name="android.permission.VIBRATE" />  
  30.   
  31. <!-- <permission>  
  32. 权限声明标签,定义了供给<uses-permission>使用的具体权限,  
  33. 通常情况下我们不需要为自己的应用程序声明某个权限,除非需要给其他应用程序提供可调用的代码或者数据,这个时候你才需要使用<permission>标签。  
  34. android:name权限名标签,  
  35. android:icon权限图标  
  36. android:description权限描述  
  37. <permission-group>以及<permission-tree>配合使用来构造更有层次的、更有针对性权限系统。  
  38.   
  39. <permission android:description="string resource"  
  40.     android:icon="drawable resource"  
  41.     android:label="string resource"  
  42.     android:name="string"  
  43.     android:permissionGroup="string"  
  44.     android:protectionLevel=["normal" | "dangerous" | "signature" | "signatureOrSystem"] />  
  45.  -->  
  46.       
  47. <!-- <instrumentation>  
  48. 用于声明Instrumentation测试类来监控Android应用的行为并应用到相关的功能测试中,  
  49. android:functionalTest测试功能开关  
  50. android:handleProfiling profiling调试功能开关,  
  51. android:targetPackage测试用例目标对象。  
  52. Instrumentation对象是在应用程序的组件之前被实例化的,这点在组织测试逻辑的时候需要被考虑到。  
  53. <instrumentation>标签语法范例如下。  
  54.   
  55. <instrumentation android:functionalTest=["true" | "false"]  
  56.     android:handleProfiling=["true" | "false"]  
  57.     android:icon="drawable resource"  
  58.     android:label="string resource"  
  59.     android:name="string"  
  60.     android:targetPackage="string" />  
  61.  -->  
  62.   
  63.   
  64. <!-- <uses-sdk>  
  65. 用于指定Android应用中所需要使用的SDK的版本,  
  66. 比如我们的应用必须运行于Android 2.0以上版本的系统SDK之上,那么就需要指定应用支持最小的SDK版本数为5;  
  67. 当然,每个SDK版本都会有指定的整数值与之对应,比如我们最常用的Android 2.2.x的版本数是8。  
  68. 当然,除了可以指定最低版本之外,<uses-sdk>标签还可以指定最高版本和目标版本,语法范例如下。  
  69. <uses-sdk android:minSdkVersion="integer"   
  70.     android:targetSdkVersion="integer"  
  71.     android:maxSdkVersion="integer" /> -->  
  72.     <uses-sdk  
  73.         android:minSdkVersion="8"  
  74.         android:targetSdkVersion="17" />  
  75. <!-- <uses-configuration><uses-feature>  
  76. 这两个标签都是用于描述应用所需要的硬件和软件特性,以便防止应用在没有这些特性的设备上安装。  
  77. <uses-configuration>标签中,比如有些设备带有D-pad或者Trackball这些特殊硬件,那么android:reqFiveWayNav属性就需要设置为true;  
  78. 而如果有一些设备带有硬件键盘,android:reqHardKeyboard也需要被设置为true。  
  79. 另外,如果设备需要支持蓝牙,我们可以使用<uses-feature android:name="android.hardware.bluetooth" />来支持这个功能。  
  80. 这两个标签主要用于支持一些特殊的设备中的应用,两个标签的语法范例分别如下。  
  81. <uses-configuration android:reqFiveWayNav=["true" | "false"]   
  82.     android:reqHardKeyboard=["true" | "false"]  
  83.     android:reqKeyboardType=["undefined" | "nokeys" | "qwerty" | "twelvekey"]  
  84.     android:reqNavigation=["undefined" | "nonav" | "dpad" | "trackball" | "wheel"]  
  85.     android:reqTouchScreen=["undefined" | "notouch" | "stylus" | "finger"] />  
  86.   
  87. <uses-feature android:name="string"  
  88.     android:required=["true" | "false"]  
  89.     android:glEsVersion="integer" />  
  90. -->  
  91.   
  92. <!-- <uses-library>  
  93. 用于指定Android应用可使用的用户库,  
  94. 除了系统自带的android.app、android.content、android.view和android.widget这些默认类库之外,  
  95. 有些应用可能还需要一些其他的Java类库作为支持,  
  96. 这种情况下我们就可以使用<uses-library>标签让ClassLoader加载其类库供Android应用运行时用。  
  97. 以下是语法范例。  
  98. <uses-library android:name="string"  
  99.     android:required=["true" | "false"] />  
  100.   
  101. 小贴士:  
  102. 当运行Java程序时,  
  103. 首先运行JVM(Java虚拟机),然后再把Java类加载到JVM里头运行,  
  104. 负责加载Java类的这部分就叫做ClassLoader。当然,ClassLoader是由多个部分构成的,每个部分都负责相应的加载工作。  
  105. 当运行一个程序的时候,JVM启动,运行BootstrapClassLoader,  
  106. 该ClassLoader加载java核心API(ExtClassLoader和AppClassLoader也在此时被加载),  
  107. 然后调用ExtClassLoader加载扩展API,最后AppClassLoader加载CLASSPATH目录下定义的Class,  
  108. 这就是一个Java程序最基本的加载流程。  
  109. -->  
  110.   
  111. <!-- <supports-screens>  
  112. 对于一些应用或者游戏来说,只能支持某些屏幕大小的设备或者在某些设备中的效果比较好,  
  113. 我们就会使用<supports-screens>标签来指定支持的屏幕特征。  
  114. 屏幕自适应属性android:resizeable,  
  115. 小屏(android:smallScreens)、  
  116. 中屏(android:normalScreens)、  
  117. 大屏(android:largeScreens)  
  118. 特大屏(android:xlargeScreens)支持属性,  
  119. 按屏幕渲染图像属性android:anyDensity  
  120. 最小屏幕宽度属性android:requiresSmallestWidthDp等。  
  121. <supports-screens>标签的语法范例如下。  
  122.   
  123. <supports-screens android:resizeable=["true"| "false"]  
  124.     android:smallScreens=["true" | "false"]  
  125.     android:normalScreens=["true" | "false"]  
  126.     android:largeScreens=["true" | "false"]  
  127.     android:xlargeScreens=["true" | "false"]  
  128.     android:anyDensity=["true" | "false"]  
  129.     android:requiresSmallestWidthDp="integer"  
  130.     android:compatibleWidthLimitDp="integer"  
  131.     android:largestWidthLimitDp="integer"/>  
  132.   
  133.  -->  
  134.  <!-- <application>  
  135. 应用配置的根元素,位于<manifest>下层,包含所有与应用有关配置的元素,  
  136. 其属性可以作为子元素的默认属性  
  137. 应用名android:label,  
  138. 应用图标android:icon,  
  139. 应用主题android:theme等。  
  140. 大家可以打开Android SDK文档来进一步学习,以下是语法范例。  
  141. <application android:allowTaskReparenting=["true" | "false"]  
  142.     android:backupAgent="string"  
  143.     android:debuggable=["true" | "false"]  
  144.     android:description="string resource"  
  145.     android:enabled=["true" | "false"]  
  146.     android:hasCode=["true" | "false"]  
  147.     android:hardwareAccelerated=["true" | "false"]  
  148.     android:icon="drawable resource"  
  149.     android:killAfterRestore=["true" | "false"]  
  150.     android:label="string resource"  
  151.     android:logo="drawable resource"  
  152.     android:manageSpaceActivity="string"  
  153.     android:name="string"  
  154.     android:permission="string"  
  155.     android:persistent=["true" | "false"]  
  156.     android:process="string"  
  157.     android:restoreAnyVersion=["true" | "false"]  
  158.     android:taskAffinity="string"  
  159.     android:theme="resource or theme" >  
  160. ... ...  
  161. </application>  
  162.   -->  
  163.     <application  
  164.         android:allowBackup="true"  
  165.         android:icon="@drawable/ic_launcher"  
  166.         android:label="@string/app_name"  
  167.         android:theme="@style/AppTheme" >  
  168. <!-- <activity>  
  169. Activity活动组件(即界面控制器组件)的声明标签,  
  170. Android应用中的每一个Activity都必须在AndroidManifest.xml配置文件中声明,  
  171. 否则系统将不识别也不执行该Activity。  
  172. Activity对应类名android:name,  
  173. 对应主题android:theme,  
  174. 加载模式android:launchMode  
  175. 键盘交互模式android:windowSoftInputMode等,  
  176. 其他的属性用法大家可以参考Android SDK文档学习。  
  177. 另外,<activity>标签还可以包含用于消息过滤的<intent-filter>元素,  
  178. 当然还有可用于存储预定义数据的<meta-data>元素,以下是<activity>标签的语法范例。  
  179.   
  180. <activity android:allowTaskReparenting=["true" | "false"]  
  181.     android:alwaysRetainTaskState=["true" | "false"]  
  182.     android:clearTaskOnLaunch=["true" | "false"]  
  183.     android:configChanges=["mcc", "mnc", "locale",  
  184.         "touchscreen", "keyboard", "keyboardHidden",  
  185.         "navigation", "orientation", "screenLayout",  
  186.         "fontScale", "uiMode"]  
  187.     android:enabled=["true" | "false"]  
  188.     android:excludeFromRecents=["true" | "false"]  
  189.     android:exported=["true" | "false"]  
  190.     android:finishOnTaskLaunch=["true" | "false"]  
  191.     android:hardwareAccelerated=["true" | "false"]  
  192.     android:icon="drawable resource"  
  193.     android:label="string resource"  
  194.     android:launchMode=["multiple" | "singleTop" | "singleTask" | "singleInstance"]  
  195.     android:multiprocess=["true" | "false"]  
  196.     android:name="string"  
  197.     android:noHistory=["true" | "false"]    
  198.     android:permission="string"  
  199.     android:process="string"  
  200.     android:screenOrientation=["unspecified" | "user" | "behind" |  
  201.         "landscape" | "portrait" |  
  202.         "sensor" | "nosensor"]  
  203.     android:stateNotNeeded=["true" | "false"]  
  204.     android:taskAffinity="string"  
  205.     android:theme="resource or theme"  
  206.     android:windowSoftInputMode=["stateUnspecified",  
  207.         "stateUnchanged", "stateHidden",  
  208.         "stateAlwaysHidden", "stateVisible",  
  209.         "stateAlwaysVisible", "adjustUnspecified",  
  210.         "adjustResize", "adjustPan"] >     
  211. ... ...  
  212. </activity>  
  213.   
  214.  -->  
  215.         <activity  
  216.             android:name="com.example.android_activitylife.MainActivity"  
  217.             android:label="@string/app_name" >  
  218.             <intent-filter>  
  219.                 <action android:name="android.intent.action.MAIN" />  
  220.   
  221.                 <category android:name="android.intent.category.LAUNCHER" />  
  222.             </intent-filter>  
  223.         </activity>  
  224.     </application>  
  225. <!-- <activity-alias>  
  226. Activity组件别名的声明标签,简单来说就是Activity的快捷方式,  
  227. 属性android:targetActivity表示的就是其相关的Activity名,当然必须是前面已经声明过的Activity。  
  228. Activity别名名称android:name,  
  229. 别名开关android:enabled,  
  230. 权限控制android:permission等。  
  231. 另外,我们还需要注意的是,Activity别名也是一个独立的Activity,可以拥有自己的<intent-filter><meta-data>元素,  
  232. 其语法范例如下。  
  233.   
  234. <activity-alias android:enabled=["true" | "false"]  
  235.     android:exported=["true" | "false"]  
  236.     android:icon="drawable resource"  
  237.     android:label="string resource"  
  238.     android:name="string"  
  239.     android:permission="string"  
  240.     android:targetActivity="string" >  
  241. ... ...  
  242. </activity-alias>  
  243. -->  
  244.   
  245. <!-- <intent-filter><action><category><data>  
  246. <intent-filter>用于Intent消息过滤器的声明,  
  247. Intent消息对于Android应用系统来说,是非常重要的“粘合剂”,  
  248. <intent-filter>元素可以放在<activity><activity-alias><service><receiver>元素标签中,  
  249. 来区分可用于处理消息的Activity控制器、Service服务和广播接收器Broadcast Receiver。  
  250. 另外,我们还知道Intent消息还包含有名称、动作、数据、类别等几个重要属性。这点与该标签的写法也有一定的关系,  
  251. <category>标签则用于表示能处理消息组件的类别,即该Action所符合的类别;  
  252. <data>元素则用于描述消息需要处理的数据格式,我们甚至还可以使用正则表达式来限定数据来源。  
  253. 这些元素和标签的具体用法我们还需要慢慢学习,下面是标准<intent-filter>元素标签的语法范例。  
  254.   
  255. <intent-filter android:icon="drawable resource"  
  256.     android:label="string resource"  
  257.     android:priority="integer" >  
  258.     <action android:name="string" />  
  259.     <category android:name="string" />  
  260.     <data android:host="string"  
  261.         android:mimeType="string"  
  262.         android:path="string"  
  263.         android:pathPattern="string"  
  264.         android:pathPrefix="string"  
  265.         android:port="string"  
  266.         android:scheme="string" />  
  267. </intent-filter>  
  268. -->  
  269.   
  270. <!-- <meta-data>  
  271. 用于存储预定义数据,和<intent-filter>类似,  
  272. <meta-data>也可以放在<activity><activity-alias><service><receiver>这四个元素标签中。  
  273. Meta数据一般会以键值对的形式出现,个数没有限制,而这些数据都将被放到一个Bundle对象中  
  274. ,程序中我们则可以使用ActivityInfo、ServiceInfo甚至ApplicationInfo对象的metaData属性中读取。  
  275. 假设我们在一个Activity中定义了一个<meta-data>元素,相关示例用法如下。  
  276.   
  277. <activity...>  
  278.     <meta-data android:name="testData" android:value="Test Meta Data"></meta-data>  
  279. </activity>  
  280.   
  281. ActivityInfo info = this.getPackageManager()  
  282.     .getActivityInfo(getComponentName(), PackageManager.GET_META_DATA);  
  283. String testData = info.metaData.getString("testData");  
  284. System.out.println("testData:" + testData);  
  285. -->  
  286.   
  287. <!-- <service>  
  288. Service服务组件的声明标签,用于定义与描述一个具体的Android服务,  
  289. Service服务类名android:name,  
  290. 服务图标android:icon,  
  291. 服务描述android:label  
  292. 服务开关android:enabled等。  
  293. 以下是<service>标签的语法范例。  
  294.   
  295. <service android:enabled=["true" | "false"]  
  296.     android:exported=["true" | "false"]  
  297.     android:icon="drawable resource"  
  298.     android:label="string resource"  
  299.     android:name="string"  
  300.     android:permission="string"  
  301.     android:process="string" >  
  302. ... ...  
  303. </service>  
  304. -->  
  305.   
  306. <!-- <receiver>  
  307. Boardcast Receiver广播接收器组件的声明标签,用于定义与描述一个具体的Android广播接收器,其主要属性和<service>  
  308. 标签有些类似:Boardcast Receiver  
  309. 接收器类名android:name,  
  310. 接收器图标android:icon,  
  311. 接收器描述android:label  
  312. 接收器开关android:enabled等。  
  313. <receiver>标签的语法范例。  
  314.   
  315. <receiver android:enabled=["true" | "false"]  
  316.     android:exported=["true" | "false"]  
  317.     android:icon="drawable resource"  
  318.     android:label="string resource"  
  319.     android:name="string"  
  320.     android:permission="string"  
  321.     android:process="string" >  
  322. ... ...  
  323. </receiver>  
  324. -->  
  325.   
  326. <!-- <provider><grant-uri-permission>  
  327. 除Activity、Service和Boardcast Receiver之外的另一个“四大组件”,也就是Content Provider内容提供者的声明标签。  
  328. <provider>标签除了和其他组件相同的android:name、android:icon和android:label等基础属性之外,  
  329. 还提供了用于支持其功能的特殊属性,以下是<provider>标签的语法范例。  
  330.   
  331. <provider android:authorities="list"  
  332.     android:enabled=["true" | "false"]  
  333.     android:exported=["true" | "false"]  
  334.     android:grantUriPermissions=["true" | "false"]  
  335.     android:icon="drawable resource"  
  336.     android:initOrder="integer"  
  337.     android:label="string resource"  
  338.     android:multiprocess=["true" | "false"]  
  339.     android:name="string"  
  340.     android:permission="string"  
  341.     android:process="string"  
  342.     android:readPermission="string"  
  343.     android:syncable=["true" | "false"]  
  344.     android:writePermission="string" >  
  345. ... ...  
  346. </provider>  
  347.  -->  
  348. </manifest>  

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多