<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前端布局属性
  2. Android之Relative布局的相关属性解析
  3. Android RecyclerView 设置显示滚动条属性后,滚动条不显示踩坑记
  4. android xml控件属性
  5. EditText 所有属性
  6. Edittext设置输入属性,包括使用代码设置
  7. Android 之 EditText属性用法介绍
  8. Android 5.0 默认水波纹背景属性,可设置任何View

随机推荐

  1. WebApp mui&H5+ 视频处理之拍摄视频一(Nat
  2. Android学习笔记(2):Hello world
  3. Android中使用OrmLite来对SQLite数据库进
  4. Android zip文件压缩解压
  5. BiliBili-IJKPlayer播放器源码分析(一)
  6. Android Activity 及其子类
  7. Android NDK 编译、使用动态库
  8. ndk生成ARM汇编(附代码)
  9. android(2)
  10. [Android] Status Bar Notifications