<manifest>

语法:

<manifestxmlns:android="http://schemas.android.com/apk/res/android"
package="string"
android:sharedUserId="string"
android:sharedUserLabel="stringresource"
android:versionCode="integer"
android:versionName="string"
android:installLocation=["auto" |"internalOnly" | "preferExternal"]>
. . .
</manifest>

必须包含:

<application>

可以包含:

<compatible-screens>

<instrumentation>

<permission>

<permission-group>

<permission-tree>

<supports-gl-texture>

<supports-screens>

<uses-configuration>

<uses-feature>

<uses-permission>

<uses-permission-sdk-23>

<uses-sdk>

描述:

AndroidManifest.xml文件根标签. 必须包含<application>标签, 必须指定xmlns:android和package属性.

属性:

xmlns:android: 定义android的命名空间, 取值固定必须为:"http://schemas.android.com/apk/res/android".

package: 为application指定一个包名. 这个名字应该是唯一的, 可以包含大小写字母, 数字和下划线. 私人包名只能从字母开始. 为了防止冲突, 应该使用自己的互联网域名为基础作为包名. 比如google以com.google开头, 永远也不要使用com.example作为包名起始部分. 包名会作为APP的唯一标示, 并且也会作为默认的进程名称和默认的任务名字. 一旦发布之后就不应该更改包名, 否则会被系统当做两个APP处理.

android:sharedUserId: 指定一个与其它APP共享的Linux userID. 默认情况下Android为每个APP分配唯一的User ID, 如果为两个或以上的APP设置了相同的sharedUserId, 那么它们将具备相同的User ID(它们也需要相同的证书签名). 相同User ID的APP可以访问彼此的数据, 如果需要的话还可以运行在同一个进程中.

android:sharedUserLabel: 为共享User ID指定一个label. 必须为该属性指定一个string资源, 不能使用rawstring. 必须指定android:sharedUserId该属性才有意义.

android:versionCode: 为APP指定一个内部版本号. 用于比较哪个版本更新, 越大的数字表示版本越新, 这个数字不会展示给用户看,展示给用户看的数字是versionName. 该属性必须被设置为整型, 比如100. 我们可以自己定义这个数字, 只要后面的版本号更大就可以. 比如我们可以通过组合两个十六进制的数字为x.y格式, 或者只是简单的加一.

android:versionName: 给用户看的版本号. 该属性可以设置为string资源或者rawstring. 除了给用户看, 这个属性没有其它用处.

android:installLocation: APP默认的安装路径. 可以接受三个指定的参数:

internalOnly: APP只能安装在设备的内部存储空间中. 如果内部存储空间不足, 那么将不安装. 该值为默认值.

auto: 在这种情况下APP会默认安装在内部存储空间中,如果空间不足, 就会安装在外部存储空间中. 安装之后用户可以通过设置在内部和外部存储空间中移动.

preferExternal: 在这种情况下APP会默认安装子啊外部存储空间中, 但是不保证一定成功, 当外部储存不可用或者已满的时候, 会安装在内部空间中. 在安装之后可以通过设置在内部和外部存储空间中移动.

当APP安装在外部存储空间中的时候:

1..apk文件将会保存在外部空间, 但是APP的数据还是会被保存在内部存储空间.

2..apk文件所在的容器将会被加密,使得只有该设备上安装的APP才能操作这些数据. 用户不能将SD卡放在别的设备上然后使用SD卡上的APP.

3.根据用户的需求, APP可以被移动到内部存储空间.

在默认的internalOnly情况下, 用户不能将APP从内部空间移动到外部.

<meta-data>

语法:

<meta-data android:name="string"

android:resource="resource specification"

android:value="string" />

父标签:

<activity>

<activity-alias>

<application>

<provider>

<receiver>

<service>

描述:

一个可以提供给父组件的键值对数据. 每个组件可以包含多个<meta-data>标签, 该标签指定的数据会以Bundle对象提供给组件, 可以通过PackageItemInfo.metaData获取到.

普通数值通过value属性指定, 资源文件则通过resource属性指定.

属性:

android:name: 为<meta-data>指定一个名字, 必须唯一, 比如:"com.example.project.activity.fred".

android:resource: 指定相关的资源ID, 比如: <meta-dataandroid:name="zoo" android:resource="@string/kangaroo"/>, 该ID可以通过Bundle.getInt()方法得到.

android:value: 指定一个值, 可以通过Bundle访问. 数据类型和对应的获取方法如下:

类型

获取方法

字符串, 转义字符需要使用”\\”, 比如”\\n”, Unicode字符需要使用”\\uxxxx”.

getString()

整型,比如100

getInt()

布尔值, true或者false

getBoolean()

颜色值, 比如”#rgb”, “#argb”, “#rrggbb”

getInt()

浮点数, 比如”1.23”

getFloat()

<path-permission>

语法:

<path-permissionandroid:path="string"

android:pathPrefix="string"

android:pathPattern="string"

android:permission="string"

android:readPermission="string"

android:writePermission="string" />

父标签:

<provider>

描述:

为一个content provider指定路径和需要的权限.

属性:

android:path: 一个完整的URI的path, 只有符合这个path的访问路径才会被授权访问contentprovider.

android:pathPrefix: 指定一个URI path的初始部分, 满足这个初始部分的path的访问路径才会被授权访问contentprovider.

android:pathPattern: 指定一个完整的URI的path, 符合者可以访问contentprovider, 但是可以使用通配符.

android:permission: 想要访问contentprovider数据的客户端必须符合android:permission指定的名字, 才能访问. 可以一次指定读和写, 但是会被下面的android:readPermission和android:writePermission覆盖.

android:readPermission: 指定一个名字, 想要读取contentprovider的客户端必须满足这个名字, 才能访问.

android:writePermission: 指定一个名字, 想要写入contentprovider的客户端必须满足这个名字, 才能访问.

<permission>

语法:

<permissionandroid:description="stringresource"
android:icon="drawableresource"
android:label="stringresource"
android:name="string"
android:permissionGroup="string"
android:protectionLevel=["normal" |"dangerous" |
"signature" |"signatureOrSystem"] />

父标签:

<manifest>

描述:

为该APP或者其他APP声明一个访问组件或功能的权限. 满足该权限才可以访问.

属性:

android:description: 指定一个显示给用户的说明,可以显示的内容比label内容长. 必须为string资源, 不能是raw string.

android:icon: 为permission指定一个icon.

android:label: 为permission指定一个名字, 可以显示给用户看. 发布的时候建议使用string资源.

android:name: permission的名字, 这个名字不同于label,是在代码里引用permission的时候使用的. 比如在<user-permissioin>中声明. name必须唯一, 比如:"com.example.project.PERMITTED_ACTION".

android:permissionGroup: 为permission指定一个组. 该属性的值必须是一个组名,由<permission-group>声明. 如果没有使用permissionGroup属性, 那么所属的组为空.

android:protectionLevel: 指定该权限的风险等级, 可以取以下值:

描述

“normal”

默认值, 给访问者一个低风险的权限. 系统会默认授予访问者这些权限而不用经过用户同意.

“dangerous”

一个高风险的权限. 系统默认情况下不会直接给予访问的APP这些权限, 而是会提示用户.

“signature”

只有符合签名的APP才会被授予权限. 如果签名符合, 则系统不会提示用户.

“signatureOrSystem”

Android系统映像和符合签名的APP可以被授予权限. 请尽量避免使用该参数, 因为一般情况下signature已经够用, signatureOrSystem用于某些情况下镜像内置应用需要共享数据的时候使用.

参考:

http://developer.android.com/guide/topics/manifest/manifest-element.html

http://developer.android.com/guide/topics/manifest/meta-data-element.html

http://developer.android.com/guide/topics/manifest/path-permission-element.html

http://developer.android.com/guide/topics/manifest/permission-element.html


更多相关文章

  1. android关于shape的使用
  2. Visual Studio跨平台开发(4):Xamarin Android控制项介绍
  3. Android(安卓)Studio使用教程(二)
  4. Android使用EditText小技巧汇总
  5. Android之Relative布局的相关属性解析
  6. 一些常用到的android前端布局属性
  7. Android(安卓)RecyclerView 设置显示滚动条属性后,滚动条不显示踩
  8. android xml控件属性
  9. 相关约束参数的含义

随机推荐

  1. Android(安卓)SDK的安装
  2. Android基础知识巩固系列 Android之四大
  3. Android(安卓)设备唯一标识生成方式
  4. 如何为Android应用程序添加社会化分享
  5. 在Android中动画移动一个View的位置,采用S
  6. Android(安卓)Metro风格的Launcher开发系
  7. 线程对象Android(安卓)开发之多线程处理
  8. Android开发技巧:给Button的点击上色
  9. Android签名机制之---签名过程详解
  10. [Java][Android][Process] Process 创建+