当前位置: 代码迷 >> 综合 >> AndroidManifest.xml文件
  详细解决方案

AndroidManifest.xml文件

热度:2   发布时间:2024-01-09 22:09:26.0

AndroidManifest.xml文件是Android应用程序的清单文件,是整个Android应用程序的描述文件。每个应用的根目录中都必须包含一个 AndroidManifest.xml 文件(且文件名精确无误)。 清单文件向 Android 系统提供应用的必要信息,系统必须具有这些信息方可运行应用的任何代码。

AndroidManifest.xml清单文件通常可以包含如下信息:

  1. 为应用的 Java 软件包命名。软件包名称充当应用的唯一标识符。
  2. 描述应用的各个组件,包括构成应用的 Activity、服务、广播接收器和内容提供程序。可以处理的 Intent 消息,向 Android 系统告知有关组件以及可以启动这些组件的条件的信息。
  3. 确定托管应用组件的进程。
  4. 声明应用必须具备哪些权限才能访问 API 中受保护的部分并与其他应用交互。还声明其他应用与该应用组件交互所需具备的权限
  5. 列出 Instrumentation 类,这些类可在应用运行时提供分析和其他信息。这些声明只会在应用处于开发阶段时出现在清单中,在应用发布之前将移除。
  6. 声明应用所需的最低 Android API 级别
  7. 列出应用必须链接到的库

下面给出一个清单文件的示例:

<?xml version="1.0" encoding="utf-8"?>

 

<manifest>

 

    <uses-permission />

    <permission />

    <permission-tree />

    <permission-group />

    <instrumentation />

    <uses-sdk />

    <uses-configuration /> 

    <uses-feature /> 

    <supports-screens /> 

    <compatible-screens /> 

    <supports-gl-texture /> 

 

    <application>

 

        <activity>

            <intent-filter>

                <action />

                <category />

                <data />

            </intent-filter>

            <meta-data />

        </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 />

            <path-permission />

        </provider>

 

        <uses-library />

 

    </application>

 

</manifest>

后期,随着APP开发的学习,会逐步讲解AndroidManifest.xml文件中的相关配置,此处首先讲解一下Application原色。

Application元素用于应用程序的声明。它包含了每个应用程序组件的声明,

       Application元素的属性如下所示:

<application android:allowTaskReparenting=["true" | "false"]

             android:allowBackup=["true" | "false"]

             android:allowClearUserData=["true" | "false"]

             android:backupAgent="string"

             android:backupInForeground=["true" | "false"]

             android:banner="drawable resource"

             android:debuggable=["true" | "false"]

             android:description="string resource"

             android:directBootAware=["true" | "false"]

             android:enabled=["true" | "false"]

             android:extractNativeLibs=["true" | "false"]

             android:fullBackupContent="string"

             android:fullBackupOnly=["true" | "false"]

             android:hasCode=["true" | "false"]

             android:hardwareAccelerated=["true" | "false"]

             android:icon="drawable resource"

             android:isGame=["true" | "false"]

             android:killAfterRestore=["true" | "false"]

             android:largeHeap=["true" | "false"]

             android:label="string resource"

             android:logo="drawable resource"

             android:manageSpaceActivity="string"

             android:name="string"

             android:networkSecurityConfig="xml resource"

             android:permission="string"

             android:persistent=["true" | "false"]

             android:process="string"

             android:restoreAnyVersion=["true" | "false"]

             android:requiredAccountType="string"

             android:resizeableActivity=["true" | "false"]

             android:restrictedAccountType="string"

             android:supportsRtl=["true" | "false"]

             android:taskAffinity="string"

             android:testOnly=["true" | "false"]

             android:theme="resource or theme"

             android:uiOptions=["none" | "splitActionBarWhenNarrow"]

             android:usesCleartextTraffic=["true" | "false"]

             android:vmSafeMode=["true" | "false"] >

    . . .

</application>

       下表列出记几个简单的属性描述,其他属性将在后面讲解到相关的功能是予以介绍。

属性

描述

android:allowbackup

是否将程序加入到系统的备份和恢复架构中。Android API Level 8及其以上Android系统提供了为应用程序数据的备份和恢复功能,当allowBackup标志为true时,用户即可通过adb backup和adb restore来进行对应用数据的备份和恢复,为了考虑安全性,建议发布时讲该属性设置为false

android:icon

整个应用的图标,也是每个组件的默认图标。这个属性值必须被设置为drawable资源的引用。没有默认值。

android:label

应用标签,并且还是应用的每个组件的默认标签。这个标签应该被设置为引用字符串资源,当然他也可以像其他字符串一样在用户

android:supportsRtl

声明你的application是否愿意支持从右到左(原来RTL就是right-to-left 的缩写...)的布局。如果设置为true,targetSdkVersion设置为17或更高,各种RTL的API将被激活,系统使用您的应用程序可以显示RTL布局。

android:theme

应用程序中所有的Activity设置默认的主题,属性值要引用一个样式资源。每个独立的Activity的主题会被它们自己的theme属性所覆盖。

下面我们讲解一下应用程序权限说明。

一个Android应用程序如果需要访问Android系统的功能,可能需要某些系统权限,此外如果一个Android应用被其他应用调用,也可以声明调用自身所需要的权限。下面给出这两种权限的设置

1. 声明应用正常工作所需要的权限

通过为<manifest.../>元素添加<uses-permission.../>子元素即可声明该应用正常工作所需要的权限。

例如在<manifest.../>元素里添加如下代码:

<!-- 声明应用需要振动的权限-->

<uses-permission android:name="android.permission.VIBRATE" />

2.声明调用该应用所需的权限:

通过为应用的各组件元素,如<activity.../>元素添加android:permission属性即可声明调用该程序所需要的权限。

例如在<activity.../>元素里添加如下代码:

<!-- 声明调用该Activity需要发送短信的权限 -->

<activity

android:permission="android.permission.SEND_SMS">

Android系统提供了大量的权限,这些权限都位于Manifest.permission类中,可以查看类文件中的权限声明,如下图所示:

在Android 6之前,这些权限在用户安装时询问,Android 6中,权限系统发生了改变。

Android 6对权限进行了分级

  1. 正常(Normal Protection)权限
  2. 危险(Dangerous)权限

正常权限对用户隐私没有较大影响或者不会打来安全问题,安装后就赋予这些权限,不需要显示提醒用户,用户也不能取消这些权限。

危险权限可能引起隐私问题或者影响其他程序运行,需要在运行是通过用户授权。由于该知识点相对复杂一点,此处各位暂时知道就行了,后期会单独讲解。

(张伟:2018年9月6日)

(转载时请注明来源)

  相关解决方案