我们在安装Android软件的时候,系统会提示该软件所需要的权限,相对于其他系统,android的权限非常多。我们在开发软件的时候,也需要声明相应的权限,比如希望软件能发短信,需要声明软件调用短信的权限,否则软件运行的时候就会报错。
Android的权限在AndroidManifest.xml文件里配置。AndroidManifest文件中有四个标签与permission有关,它们分别是 、 、 和 。其中最常用的是 ,当我们需要获取某个权限的时候就必须在我们的manifest文件中声明。
<?xml version="1.0" encoding="utf-8"?>…
和 的作用相似,两者之间的不同之处,是android预定义的权限,是自己定义的权限。 用的相对较少, 这两个标签就更少见了,简单说 就是声明一个标签,该标签代表了一组permissions,而是为一组permissions声明了一个namespace。后面三个标签具体使用方法后续文章会有介绍。
定义方法如下:
<permission android:description=“string resource”
android:icon=“drawable resource”
android:label=“string resource”
android:name=“string”
android:permissionGroup=“string”
android:protectionLevel=[“normal” | “dangerous” |
“signature” | “signatureOrSystem”] />
上面代码来自官方文档:http://developer.android.com/guide/topics/manifest/permission-element.html。propectionLevel这个属性是必须声明,告诉系统通知用户的应用要求许可,或允许谁认为获得许可的情况下。permissionGroup这个是可选的,与配合使用。label, name和icon用于描述权限。 的用法后面也会再详细分析。
是我们用的最多的,官方文档定义方式如下:
例如,短信和电话权限的定义:
下面是收集到的 的资料,方便用的时候查找:
android.permission.ACCESS_CHECKIN_PROPERTIES
允许读写访问”properties”表在checkin数据库中,改值可以修改上传( Allowsread/write access to the “properties” table in the checkin database, to changevalues that get uploaded)
android.permission.ACCESS_COARSE_LOCATION
允许一个程序访问CellID或WiFi热点来获取粗略的位置(Allowsan application to access coarse (e.g., Cell-ID, WiFi) location)
android.permission.ACCESS_FINE_LOCATION
允许一个程序访问精良位置(如GPS) (Allows an application to accessfine (e.g., GPS) location)
android.permission.ACCESS_LOCATION_EXTRA_COMMANDS
允许应用程序访问额外的位置提供命令(Allowsan application to access extra location provider commands)
android.permission.ACCESS_MOCK_LOCATION
允许程序创建模拟位置提供用于测试(Allowsan application to create mock location providers for testing)
android.permission.ACCESS_NETWORK_STATE
允许程序访问有关GSM网络信息(Allows applications to acces