xmlns:android属性——定义命名空间

这个属性定义了这个XML文件所使用的命名空间。如果需要指定特殊的命名空间,就需要手动编写代码,在Android Studio基本格式如下:

xmlns:<命名空间标识>="http://schemas.android.com/apk/res-auto"


package属性——应用程序的唯一标识

要是我安装另一个有相同package属性的应用程序,会有什么事情发生呢?会提示如下错误:

Failure[INSTALL_FAILED_ALREADY_EXSIST]

注意:除非特殊需要,否则不建议修改package属性的值!原因是package是唯一标识了

我们应用程序的属性,如果你试图改变它的值,那么系统通常会认为这是一个不同的

应用程序,会导致拥有前一版本应用程序的用户无法拥有新版本的应用程序。


android:sharedUserId属性——共享数据

该属性定义了需要和其他应用程序共享的Linux用户ID。

默认情况下,Android系统为每一个应用程序分配一个唯一的用户ID。然而,

当这个属性在多个应用程序中被设置为相同值的时候,它们将共享一个用户ID。

这样做的好处是,它们之间可以相互访问彼此的数据,如有需要,它们还将在相同的

进程中运行。应用没有设置这个属性,这就意味着它没有和别的应用程序存在共享关系,

这样它们之间就需要通过其他手段(如进程间通信)实现数据互访。

与android:sharedUserId属性相关的属性还有android:sharedUserLabel,

这个属性给共享的用户ID定义了一个用户可读的标签。这个标签必须用字符串资源来设置,

不能使用原生的字符串。这个属性在API LEVEL3中引用,只有设置了sharedUserId属性时才有意义。


android:versionCode属性——内部版本号

versionCode属性的值是一个内部版本号,用于确定这个版本是否比另一个版本更新,

数字越大表明它就越新。它不是显示给用户看的版本号,而是由versionName属性设置的号码。

版本号将决定一些服务的行为,比如替换应用程序时是否执行备份还原操作等。

该号码必须设为整数,递增的!


android:versionName属性——显示给用户的版本号

versionName属性的值是显示给用户的版本号,它可以被设置为一个原始字符串

或者一个字符串资源的引用。这个字符串除了要显示给用户外,没有其他的目的。

如版本号为1.1.0


android:installLocation属性——安装位置

该属性定义了应用程序默认的安装位置,共有3个可选值,其形式如下:

android:installLocation=["auto"|"internalOnly"|"preferExternal"]

下表说明了这3个可选值的含义。

值 描述
auto

应用程序可能被安装到外部存储设备中,但默认情况下系统将会把应用程序安装到内部存储设备中。

如果内存不足,那么系统将会把应用程序安装到外部存储设备中。

internalOnly

应用程序必须安装到设备的内部存储设备中。如果设置了这个值,那意味着应用程序将永远不会安装

到外部存储设备中去。如果内存不足,那么系统将不会安装这个APK。在没有

设置android:installLocation属性的情况下,internalOnly是该属性的默认值。

preferExternal

应用程序将会被安装到外部存储设备中,如果系统不支持外部存储设备或者外部设备已满,

那么系统将会把这个应用程序安装到内部存储设备中。


<uses-permission>——应用程序的权限申请

该属性为用户权限,应用使用中如果没有相应的权限,就无法创建文件,

而程序并没有显示一个异常的提示,这时我们就可能要花费大量的时间去找问题的根源。

建议开发之前仔细分析需求,分析应用为什么功能,而这些动能是否需要权限才可以访问。


<permission>节点——自定义应用程序的访问权限

定义自己的权限,用来限制对本应用程序或其他应用程序的特殊组件或功能访问

手动向AndroidManifest.xml文件中添加一个<permission>节点,它只能包含在<manifest>节点下,

语法如下所示:

<permission android:description="string resource"

android:icon="drawable resource"

android:logo="drawable resource"

android:label="string resource"

android:name="string"

android:permissionGroup="string"

android:protectionLevel=["normal"|"dangerous"|"signature"|"signatureOrSystem"]/>

3个属性:

①android:name:声明权限的名称。这个名称必须是唯一的,因此,应该使用Java风格的命名,

比如com.test.permission.TEST。

②android:permissionGroup:声明权限从属于哪一个权限组,这个权限组可以是Android预编译的,

也可以是自定义的。下表列除了Android系统预编译的系统权限组。

权限组名称 描述
android.permission-group.ACCOUNTS 用于直接访问由帐号管理器管理的帐号
android.permission-group.COST_MONEY 用于使用户不需要直接参与就可花钱的权限
android.permission-group.DEVELOPMENT_TOOLS 与开发特征相关的权限群
android.permission-group.HARDWARE_CONTROLS 用于提供直接访问设备硬件的权限
android.permission-group.LOCATION 用于允许用户访问用户当前位置的权限
android.permission-group.MESSAGES

用于允许应用程序以用户的名义发送信息或者

拦截用户收到的信息的权限

android.permission-group.NETWORK 适用于提供网络服务的访问权限
android.permission-group.PERSONAL_INFO

适用于提供访问到用户私人数据的权限,

如联系人,日历事件和电子邮件信息

android.permission-group.PHONE_CALLS

适用于关联访问和修改电话状态的权限,

比如拦截去电,读取和修改电话的状态

android.permission-group.STORAGE 与SD卡访问有关的权限组
android.permission-group.SYSTEM_TOOLS 与系统API有关的权限组

③android:protectionLevel:描述了隐含在权限中的潜在风险,该属性的值可以是下表中的一个字符串。

值 意义
normal

默认值。低风险的权限,它可以使请求的应用程序访问孤立的应用程序级的功能,

给其他应用程序,系统或者用户带来最小的风险。系统在安装时,会自动授予

这种类型的权限给请求的应用程序,无须用户明确声明。

dangerous

高风险权限,它将事请求的应用程序能访问用户的私有数据或者控制那些会

对用户产生负面影响的设备。由于这种权限存在潜在的风险,系统可能不会

自动被赋予请求的应用程序。例如,任何一个由应用程序请求的危险权限可能

会显示给用户,并且在处理之前被要求确认。例如,以下权限就属于此类权限。
<permission
android:name="android.permission.RECEIVE_SMS"
android:permissionGroup="android.permission-group.MESSAGES"
android:protectionLevel="dangerous"/>
如果应用程序使用了这个权限,就有可能导致其他应用程序无法收到短信通知,

此时我们认为使用这种权限是危险的。

signature

签名级别。系统只在请求的应用程序用同样的签名作为声明权限时才授予该权限。

如果认证匹配,则系统不通知用户或者无须用户明确批准就可以自动授权。

signatureOrSystem

签名或者系统级别。系统仅仅将它授给Android系统镜像文件(*.img文件)中的应用程序,

或者是和系统镜像中的那些用同样认证签名的应用程序。一般情况下,尽量避免使用该选项,

这是由于signature保护层级应满足大多数需求和工程,而不管应用程序被确切地安装在何处。

signatureOrSystem权限适用于特定的特殊环境,在这样的环境里,

多个厂商已经将应用程序构建到系统镜像中,并且需要明确共享特定特征。


manifest节点的更多相关文章

  1. Android读取Manifest文件下Application等节点下的metadata自定义数据

    介绍 Android在 提供了meta-date使用键值对的形式实现自定义配置.一般使用中作为渠道标识.可以用 在<application>,<activity>,<ac ...

  2. Android 阅读Manifest在文件Application 在与其他节点meta-data定义自己的数据

    介绍 Android提供meta-date使用键值在实现自己的自定义配置的形式. 通常用作信道标识.它可以用在<application>,<activity>,<acti ...

  3. Android清单文件详解(三)----应用程序的根节点<application>

    <application>节点是AndroidManifest.xml文件中必须持有的一个节点,它包含在<manifest>节点下.通过<application>节 ...

  4. Android清单文件具体解释(三)----应用程序的根节点&lt;application&gt;

    <application>节点是AndroidManifest.xml文件里必须持有的一个节点,它包括在<manifest>节点下.通过<application>节 ...

  5. <application>节点属性

    1.android:allowBackup 它表示是否允许应用程序参与备份.如果将该属性设置为false,则即使备份整个系统,也不会执行这个应用程序的备份操作,而整个系统备份能导致所有应用程序数据通过 ...

  6. application节点

    <application>节点是AndroidManifest.xml文件中必须持有的一个节点,它包含在<manifest>节点下.通过<application>节 ...

  7. Android(2)—Mono For Android App版本自动更新

    0.前言 公司Android查询的项目已经开始,整体采用Java后台+App前台来实现,由于项目小,App这块就我一个人开发,首先需要研究的是:Android版本的更新升级问题:本人经过近一周的学习整 ...

  8. Android安全开发之通用签名风险

    Android安全开发之通用签名风险 作者:伊樵.舟海.呆狐@阿里聚安全 1 通用签名风险简介 1.1 Android应用签名机制 阿里聚安全漏洞扫描器有一项检测服务是检测APP的通用签名风险.And ...

  9. Android(Java)控制GPIO的方法及耗时分析

    前面两篇分别介绍了通过脚本和C代码读写/sys/class/gpio以控制GPIO.实际项目调试时经常还需要在Java代码里控制GPIO,其实现与C代码类似,唯一不同是Android权限.本文重点介绍 ...

随机推荐

  1. SIFT算法相关资料

    SIFT算法相关资料 一.SIFT算法的教程.源码及应用软件1.ubc:DAVID LOWE---SIFT算法的创始人,两篇巨经典经典的文章http://www.cs.ubc.ca/~lowe/ 2. ...

  2. mysql tinyint(1) 在java中被转化为boolean

    数据库表字段类型为:tinyint 长度为1 在java中对应的类型是boolean 查询时直接在页面展示成true或false 如果是2,3,4 这样的也是默认成true,非常不友好. 解决方案: ...

  3. 关于rtos中任务切换时的程序流程

    今天和一个小伙伴讨论了一下基于cortex-m3内核的RTOS在任务切换时的程序流程,小伙伴说国内某搜索引擎都搜不到这类的信息,所以我才打算写下来,硬件平台是stm32f1​. 这里的切换有两种情况: ...

  4. Python Flask学习笔记(1)

    1.搭建虚拟环境 a. 安装 virtualenv : pip3 install virtualenv b. 建立虚拟环境 : 任意目录下建立一个空文件(我的是 Py_WorkSpace) ,在该文件 ...

  5. Java&Selenium&JS&AWT之那些难以点击到的按钮

    一.摘要 本篇博文的重点并不是简单的click()方法,而是要讲的是那些click()方法失效的时候的处理方式,其实做自动化久了我们都能发现研发的代码并不是都那么美丽,selenium支持的8种定位方 ...

  6. marquee标签实现跑马灯效果--无缝滚动

    今天在做微信端的大转盘抽奖时,想把所有用户的抽奖记录做成无缝滚动的效果,无奈我的js功底太差,一时想不出实现的方法,便百度各种相似效果.但无意中发现了一个html标签——<marquee> ...

  7. bat 读取 ini 配置文件

    bat 读取 ini 配置文件 config.ini: abc=abc a=a localpath=D:\local\path .bat: @echo off setlocal enabledelay ...

  8. Java的值传递和引用传递的说法

    学过Java基础的人都知道:值传递和引用传递是初次接触Java时的一个难点,有时候记得了语法却记不得怎么实际运用,有时候会的了运用却解释不出原理,而且坊间讨论的话题又是充满争议:有的论坛帖子说Java ...

  9. UVALive 6859——凸包&&周长

    题目 链接 题意:在一个网格图上,给出$n$个点的坐标,用一个多边形包围这些点(不能接触,且多边形的边只能是对角线或直线),求多边形的最小周长. 分析 对于每个点,我们考虑与之相邻的4个点.一共由 $ ...

  10. Luogu P4109 [HEOI2015]定价 贪心

    思路:找规律?$or$贪心. 提交:1次 题解: 发现:若可以构成$X0000$,答案绝对不会再在数字最后把$0$改成其他数: 若可以构成$XX50...0$更优. 所以左端点增加的步长是增加的($i ...