AndroidManifest.xml配置文件详解

每一个 Android 项目都包含一个清单(Manifest)文件 AndroidManifest.xml,它是 XML 格式的 Android 程序声明文件,每个 Android 程序必须在根目录下包含一个 AndroidManifest.xml。

AndroidManifest.xml 包含 Android 系统运行程序前所必须掌握的重要信息,这些信息包含应用程序名称、图标、包名称、模块组成、授权和 SDK 最低版本等。

例如,Manifest 文件可以使用如下代码声明一个 Activity:

 
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android = "http://schemas.android.com/apk/res/android"
  3. package = "demo.hbyz.myapplication3">
  4.  
  5. <application
  6. android:allowBackup = "true"
  7. android:icon = "@mipmap/ic_launcher"
  8. android:label = "@string/app_name"
  9. android:roundIcon = "@mipmap/ic_launcher_round"
  10. android:supportsRtl = "true"
  11. android:theme = "@style/AppTheme">
  12.  
  13. <activity android:name = ".MainActivity">
  14. <intent-filter>
  15. <action android:name = "android.intent.action.MAIN" />
  16. <category android:name = "android.intent.category.LAUNCHER" />
  17. </intent-filter>
  18. </activity>
  19.  
  20. </application>
  21.  
  22. </manifest>

AndroidManifest.xml 中可包含的所有标签元素如以下代码所示,其中除了 <manifest> 和 <application> 标签是必需的,其他所有标签都可按情况添加。

 
  1. <?xml version="1.0" encoding="utf-8"?>
  2.  
  3. <manifest>
  4.  
  5. <uses-permission />
  6. <permission />
  7. <permission-tree />
  8. <permission-group />
  9. <instrumentation />
  10. <uses-sdk />
  11. <uses-configuration />
  12. <uses-feature />
  13. <supports-screens />
  14. <compatible-screens />
  15. <supports-gl-texture />
  16.  
  17. <application>
  18.  
  19. <activity>
  20. <intent-filter>
  21. <action />
  22. <category />
  23. <data />
  24. </intent-filter>
  25. <meta-data />
  26. </activity>
  27.  
  28. <activity-alias>
  29. <intent-filter>. . .</intent-filter>
  30. <meta-data />
  31. </activity-alias>
  32.  
  33. <service>
  34. <intent-filter>. . .</intent-filter>
  35. <meta-data/>
  36. </service>
  37.  
  38. <receiver>
  39. <intent-filter>. . .</intent-filter>
  40. <meta-data />
  41. </receiver>
  42.  
  43. <provider>
  44. <grant-uri-permission />
  45. <meta-data />
  46. <path-permission />
  47. </provider>
  48.  
  49. <uses-library />
  50.  
  51. </application>
  52.  
  53. </manifest>

在此,仅对几种常见的标签进行简单介绍。

1) manifest 标签

manifest 标签是 AndroidManifest.xml 文件的根标签。

manifest 标签用于设置与项目相关的一些属性,比如用于唯一标识应用程序的 package 属性,用于记录应用程序版本的 Android:versionName 属性等等。其中的 xmlns:Android 属性必须被定义为“http://schemas.Android.com/apk/res/Android”。

2) application 标签

manifest 标签仅能包含一个 application 标签。

manifest 标签使用各种属性来指定应用程序的各种元数据(包括标题、图标和主题)。它还可以作为一个包含活动(Activity)、服务(Service)、内容提供器(Provider)和广播接收器(Broadcast Receiver)标签的容器,用来指定应用程序组件。

application 标签还可以包含很多子标签,下面我们来介绍一下它的子标签。它的子标签如下:

名称作用
activity 标签应用程序显示的每一个 Activity 都要求有一个 activity 标签,并使用 Android:name 属性来指定类的名称。这必须包含核心的启动 Activity 和其他所有可以显示的屏幕或者对话框。启动任何一个没有在清单中定义的 Activity 时都会抛出一个运行时异常。每一个 Activity 节点都允许使用 intent-filter 子标签来指定哪个 Intent 启动该活动。
service 标签和 activity 标签一样,应用程序中使用的每一个 Service 类都要创建一个新的 service 标签。(Service 标签也支持使用 intent-filter 子标签来允许后面的运行时绑定。)
provider 标签provider 标签用来说明应用程序中的每一个内容提供器。内容提供器是用来管理数据库访问以及程序内和程序间共享的。
receiver 标签通过添加 receiver 标签,可以注册一个广播接收器,而不用事先启动应用程序。广播接收器就像全局事件监听器一样,一旦注册了之后,无论何时,只要与它相匹配的 Intent 被应用程序广播出来,它就会立即执行。通过在声明中注册一个广播接收器,可以使这个进程实现完全自动化。如果一个匹配的 Intent 被广播了,应用程序就会自动启动,并且你注册的广播接收器也会开始运行。

3) uses-permission 标签

作为安全模型的一部分,uses-permission 标签声明了那些自己定义的权限,而这些权限是应用程序正常执行所必需的。在安装程序时,设定的所有权限将会告诉用户,由他们来决定同意与否。

对很多本地Android服务来说,权限都是必需的,特别是那些需要付费或者有安全问题的服务(例如拨号、接收 SMS 或者使用基于位置的服务)。第三方应用程序,包括你自己的应用程序,也可以在提供对共享的程序组件进行访问之前指定权限。

4) permission 标签

在可以限制访问某个应用程序组件之前,需要在清单中定义一个 permission。

可以使用 permission 标签来创建这些权限定义。然后,应用程序组件就可以通过添加 Android: permission 属性来要求这些权限。其他的应用程序需要在它们的清单中包含 uses-permission 标签(并且通过授权),之后才能使用这些受保护的组件。

在 permission 标签内,可以详细指定允许的访问权限的级别(normal、dangerous、signature和signatureOrSystem)、一个 label 属性和一个外部资源,这个外部资源应该包含对授予这种权限的风险的描述。

5) instrumentation 标签

instrumentation 类提供一个框架,用来在应用程序运行时在活动或者服务上运行测试。

instrumentation 类提供了一些方法来监控应用程序及其与系统资源的交互。对于为自己的应用程序所创建的每一个测试类,都需要创建一个新的节点。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
AndroidManifest.xmlAndroid应用程序的核心配置文件,它描述了应用程序的基本信息和特性,如应用程序的名称、版本、图标、启动组件、权限等等。在这里,我将为您提供一个AndroidManifest.xml详解,包括其结构、元素和属性。 ## 结构 AndroidManifest.xml文件的结构如下: ```xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.app" android:versionCode="1" android:versionName="1.0"> <!-- Application components (activities, services, etc.) --> <application android:allowBackup="true" android:icon="@drawable/app_icon" android:label="@string/app_name" android:theme="@style/AppTheme"> <activity android:name=".MainActivity" android:label="@string/app_name" android:theme="@style/AppTheme.NoActionBar"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <service android:name=".MyService" android:exported="false" android:enabled="true"/> <receiver android:name=".MyReceiver" android:exported="false" android:enabled="true"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED"/> </intent-filter> </receiver> </application> <!-- Permissions --> <uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="android.permission.CAMERA" /> </manifest> ``` ## 元素和属性 ### manifest元素 `<manifest>`元素是AndroidManifest.xml文件的根元素,它包含了以下属性: - `package`:应用程序的包名,它必须是唯一的。 - `android:versionCode`:应用程序的版本号,用于区分不同版本。 - `android:versionName`:应用程序的版本名,用来显示给用户。 ### application元素 `<application>`元素描述了整个应用程序的信息,包括应用程序的图标、名称、主题等。它包含了以下属性: - `android:allowBackup`:是否允许备份应用程序的数据,默认为true。 - `android:icon`:应用程序的图标。 - `android:label`:应用程序的名称。 - `android:theme`:应用程序的主题。 ### activity元素 `<activity>`元素描述了应用程序的一个活动,它包含了以下属性: - `android:name`:活动的类名。 - `android:label`:活动的名称。 - `android:theme`:活动的主题。 `<activity>`元素还可以包含一个或多个`<intent-filter>`元素,每个`<intent-filter>`元素描述了该活动能够响应的一类Intent。例如,以下代码表示该活动可以响应ACTION_MAIN和CATEGORY_LAUNCHER的Intent,即该活动是应用程序的启动活动。 ```xml <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> ``` ### service元素 `<service>`元素描述了应用程序的一个服务,它包含了以下属性: - `android:name`:服务的类名。 - `android:exported`:服务是否允许其他应用程序调用,默认为false。 - `android:enabled`:服务是否启用,默认为true。 ### receiver元素 `<receiver>`元素描述了应用程序的一个广播接收器,它包含了以下属性: - `android:name`:广播接收器的类名。 - `android:exported`:广播接收器是否允许其他应用程序发送广播调用,默认为false。 - `android:enabled`:广播接收器是否启用,默认为true。 `<receiver>`元素还可以包含一个或多个`<intent-filter>`元素,每个`<intent-filter>`元素描述了该广播接收器能够响应的一类Intent。例如,以下代码表示该广播接收器可以响应BOOT_COMPLETED的Intent,即在设备启动完成后自动启动该应用程序。 ```xml <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED"/> </intent-filter> ``` ### uses-permission元素 `<uses-permission>`元素描述了应用程序需要的权限,它包含了以下属性: - `android:name`:权限的名称。 例如,以下代码表示该应用程序需要访问联系人和相机的权限。 ```xml <uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="android.permission.CAMERA" /> ``` ## 总结 AndroidManifest.xmlAndroid应用程序的核心配置文件,它描述了应用程序的基本信息和特性。本文介绍了AndroidManifest.xml的结构、元素和属性,希望能够帮助您更好地理解和使用AndroidManifest.xml
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值