AndroidManifest.xml中常用属性及含义

一、 关于AndroidManifest.xml

        AndroidManifest.xml 是每个android程序中必须的文件。它位于整个项目的根目录,描述了package中暴露的组件(activities, services, 等等),他们各自的实现类,各种能被处理的数据和启动位置。 除了能声明程序中的Activities, ContentProviders, Services,Intent Receivers,还能指定permissionsinstrumentation(安全控制和测试)


、 第一层(<Manifest>)属性

<span style="font-size:14px;"><manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="cn.edu.bztc.happyidiom"
android:sharedUserId="string"
android:sharedUserLabel="string resource"
    android:versionCode="1"
android:versionName="1.0"
</manifest></span>

Axmlns:android

定义android命名空间,一般为http://schemas.android.com/apk/res/android

Bpackage

指定本应用内java主程序包的包名,它也是生成的应用程序资源文件的索引类(R)的包名。

CsharedUserId

  默认情况下,Android给每个APK分配一个唯一的UserID将不同APKsharedUserId都设为一样,则这些APK之间就可以互相共享数据了。

DsharedUserLabel

一个共享的用户名,它只有在设置了sharedUserId属性的前提下才会有意义

EversionCode

  给设备程序识别版本(升级)用的版本号。

FversionName

App版本号(用户可见)。


三、第二层(<Application>)属性

<strong><span style="font-size:14px;"><application  android:allowBackup="true"
        android:allowClearUserData=["true" | "false"]
        android:allowTaskReparenting=["true" | "false"]
        android:icon="@drawable/logo"
        android:label="@string/app_name"
        android:theme="@android:style/Theme.NoTitleBar">
</application></span></strong>

Aandroid:allowBackup

allowBackup标志值为true时,即可通过adb backupadb restore来备份和恢复应用程序数据;

B、android:allowClearUserData

  用户是否能选择自行清除数据,默认为true

C、android:allowTaskReparenting

是否允许activity更换从属的任务

Dandroid:icon

  声明APP图标。

Eandroid:description/android:label

此两个属性都是为许可提供的,均为字符串资源,当用户去看许可列表(android:label)或者某个许可的详细信息(android:description)时,这些字符串资源就可以显示给用户。label应当尽量简短,之需要告知用户该许可是在保护什么功能就行。 而description可以用于具体描述获取该许可的程序可以做哪些事情,实际上让用户可以知道如果他们同意程序获取该权限的话,该程序可以做什么。我 们通常用两句话来描述许可,第一句描述该许可,第二句警告用户如果批准该权限会可能有什么不好的事情发生

Fandroid:theme

是一个资源的风格,它定义了一个默认的主题风格给所有的activity,当然也可以在自己的theme里面去设置它,有点类似style

四、第三层(<Activity>)属性

<span style="font-size:14px;"><activity android:name="cn.edu.bztc.happyidiom.activity.MainActivity"
          android:label="@string/title_activity_main"
android:clearTaskOnLaunch=["true" | "false"]
          android:enabled=["true" | "false"]
          android:finishOnTaskLaunch=["true" | "false"]
          android:multiprocess=["true" | "false"]
          android:permission="string"
          android:process="string"
          android:screenOrientation=["unspecified" | "user" | "behind" |
                                     "landscape" | "portrait" |
                                     "sensor" | "nosensor"]>   
</activity></span>

Aandroid:name

  Activity 名。

Bandroid:label

  引用。

Candroid:clearTaskOnLaunch 

比如 P activity, Q 是被P触发的 activity,然后返回Home,重新启动 P,是否显示Q

Dandroid:enabled

Android系统是否能够实例化该应用程序的组件,如果为true,每个组件的enabled属性决定那个组件是否可以被enabled。如果为false,它覆盖组件指定的值;所有组件都是disabled

Eandroid:finishOnTaskLaunch

当用户重新启动这个任务的时候,是否关闭已打开的activity,默认是false,优先于allowTaskReparenting

Fandroid:multiprocess

是否允许多进程,默认是false

Gandroid:permission

设置许可名,这个属性若在<application>上定义的话,是一个给应用程序的所有组件设置许可的便捷方式,当然它是被各组件设置的许可名所覆盖的

Handroid:process

应用程序运行的进程名,默认值为<manifest>元素里设置的包名

Iandroid:screenOrientation

 activity显示的模式

默认为unspecified:由系统自动判断显示方向

andscape横屏模式,宽度比高度大

portrait竖屏模式,高度比宽度大

user模式,用户当前首选的方向

behind模式:和该Activity下面的那个Activity的方向一致(Activity堆栈中的)

sensor模式:有物理的感应器来决定。如果用户旋转设备这屏幕会横竖屏切换

nosensor模式:忽略物理感应器,这样就不会随着用户旋转设备而更改了

五、第四层(<Activity>)属性


<span style="font-size:14px;"><strong><intent-filter>
      <action android:name="android.intent.action.MAIN" />               
      <category android:name="android.intent.category.LAUNCHER" /> 
      <data />
</intent-filter> </strong></span>

Aaction属性

action很简单,只有android:name这个属性。常见的android:name值为android.intent.action.MAIN,表明此activity是作为应用程序的入口。

Bcategory属性

  Category、只有android:name属性。常见的android:name值为android.intent.category.LAUNCHER(决定应用程序是否显示在程序列表里)

Cdata属性

<data  android:host="string"

      android:mimeType="string"

      android:path="string"

      android:pathPattern="string"

      android:pathPrefix="string"

      android:port="string"

      android:scheme="string"/>

1】每个<data>元素指定一个URI和数据类型(MIME类型)。它有四个属性schemehostportpath对应于URI的每个部分: 

scheme://host:port/path

scheme的值一般为"http"host为包名,port为端口号,path为具体地址。如:http://com.test.project:200/folder/etc

其中hostport合起来构成URI的凭据(authority),如果host没有指定,则port也会被忽略

要让authority有意义,scheme也必须要指定。要让path有意义,scheme+authority也必须要指定

2mimeType(指定数据类型),若mimeType'Image',则会从content Provider的指定地址中获取image类型的数据。还有'video'啥的,若设置为video/mp4,则表示在指定地址中获取mp4格式的video文件

3】而pathPatternPathPrefix主要是为了格式化path所使用的.


七、第四层<meta-data>

<span style="font-size:14px;"><strong>meta-data android:name="string"
           android:resource="resource specification"
           android:value="string"/></strong></span>

这是该元素的基本结构.可以包含在<activity> <activity-alias> <service> <receiver>四个元素中。

A、android:name

  (解释:元数据项的名字,为了保证这个名字是唯一的,采用java风格的命名规范,如com.woody.project.fried)

Bandroid:resource

  (解释:资源的一个引用,指定给这个项的值是该资源的id。该id可以通过方法Bundle.getInt()来从meta-data中找到。)

Candroid:value

  (解释:指定给这一项的值。可以作为值来指定的数据类型并且组件用来找回那些值的Bundle方法:[getString],[getInt],[getFloat],[getString],[getBoolean])


八、其他属性

1.<uses-sdk />

<span style="font-size:14px;"><uses-sdk android:minSdkVersion="integer"
          android:targetSdkVersion="integer"
          android:maxSdkVersion="integer"/></span>


描述应用所需的api版本,在此属性中可以指定支持的最小版本,目标版本以及最大版本

2.<instrumentation />


<span style="font-size:14px;"><instrumentation android:functionalTest=["true" | "false"]
                 android:handleProfiling=["true" | "false"]
                 android:icon="drawable resource"
                 android:label="string resource"
                 android:name="string"
                 android:targetPackage="string"/></span>


定义一些用于探测和分析应用性能等等相关的类,可以监控程序。在各个应用程序的组件之前instrumentation类被实例化

android:functionalTest(解释:instrumentation类是否能运行一个功能测试,默认为false)



3.<permission>、<uses-permission>、<permission-tree />、<permission-group />


  当我们需要获取某个权限才能访问某个组件(Activity,Serivice,ContentProver)或数据时,就必须在我们的manifest文件中使用<uses-permission>来声明获得该权限。注意此<uses-permission><application>同级组件。

 为了安全,我们可以在组件(Activity,Serivice,ContentProver)中声明别的应用程序需要某些permission才能访问它们,这样别的应用程序如果要访问这些组件的话,就需要在他们manifest文件中使用<uses-permission>来声明获得这些权限

比如:

<permission android:name="com.teleca.project.MY_SECURITY" . . . />

那么在activity中就可以声明需要这个自定义权限才能启动该Activity

当别的应用程序需要启动你的名为“XXX”Activity时,就需要使用<uses-permission>来声明需要获得权限com.teleca.project.MY_SECURITY<permission-group>就是声明一个标签,该标签代表了一组permissions,而<permission-tree>是为一组permissions声明了一个namespace







  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
AndroidManifest.xmlAndroid 应用程序的核心清单文件,它在应用程序打包和安装时自动包含在 APK 文件。它包含了应用程序所有组件的描述信息,包括活动(Activity)、服务(Service)、广播接收器(BroadcastReceiver)和内容提供器(Content Provider)等。在 Android 应用程序运行时,系统会根据该文件的信息来决定如何启动、暂停或停止应用程序的各个组件。 下面是 AndroidManifest.xml 常用的标签及其解释: 1. manifest 标签:表示整个清单文件。 2. uses-sdk 标签:指定应用程序所需的 Android SDK 版本。 3. application 标签:表示应用程序的主要配置信息,包括应用程序的名称、图标、主题、权限、进程等。 4. activity 标签:表示一个活动(Activity),即一个界面,用于与用户交互。其包括活动的名称、标签、主题、启动模式、导航栏、窗口大小等信息。 5. service 标签:表示一个服务(Service),即在后台长期运行的组件,用于执行一些耗时任务。其包括服务的名称、进程、权限等信息。 6. receiver 标签:表示一个广播接收器(BroadcastReceiver),用于接收系统或其他应用程序发送的广播消息。其包括广播接收器的名称、权限、过滤器等信息。 7. provider 标签:表示一个内容提供器(Content Provider),用于为应用程序提供数据访问接口。其包括内容提供器的名称、权限、URI 等信息。 8. uses-permission 标签:表示应用程序所需的权限,用于访问受保护的系统资源或执行某些敏感操作。 以上是常用AndroidManifest.xml 标签,每个标签都有其特定的属性和用法,需要根据实际情况进行配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值