Android系统架构设计下,权限管理是其核心思想之一,Android引入了权限管理机制,使得开发者可以在其应用程序中声明需要访问的权限以及限制其他应用程序访问其敏感数据。其中,uses-permission在权限管理中扮演了重要的角色。
一、usesPermissionFlags
usesPermissionFlags是一个用于向Android系统表明其访问某种权限时所需的标志位的元素。在声明的时候,它需要在uses-permission标签中添加android:flags标签,并在其中列出每个标志。flags的类型为int。
<manifest ...> <uses-permission android:name="android.permission.WRITE_SETTINGS" android:label="string resource" android:description="string resource" android:icon="drawable resource" android:permissionGroup="string resource" android:protectionLevel="normal" android:flags="int"> </uses-permission> </manifest>
其中,android:flags="int",int是一个从以下列表中选择的整数值的拼接:
1、REQUEST_IGNORE_BATTERY_OPTIMIZATIONS:请求省电模式忽略(this is to request that the app be whitelisted from being affected by battery optimizations like Doze mode)
2、REQUEST_INSTALL_PACKAGES:请求安装应用程序
3、REQUEST_DELETE_PACKAGES:请求删除应用程序
4、REQUEST_IGNORE_BACKGROUND_DATA_SETTINGS:请求忽略后台数据设置
5、REQUEST_WIPE_DATA:请求擦除设备的所有数据
二、uses permission android
uses permission android 用于表明某个应用程序需要使用的权限。在AndroidManifest.xml文件的manifest元素中声明。在uses-permission元素中复用它,如下:
<manifest package="string" xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation=["auto"|"internalOnly"|"preferExternal"]> ... <uses-permission android:name="string"/> <permission android:name="string" android:label="string resource" android:description="string resource" android:permissionGroup="string resource" android:protectionLevel=["normal"|"dangerous"| "signature"|"signatureOrSystem"] /> <permission-tree android:name="string" android:label="string resource" android:description="string resource" android:permissionGroup="string resource" android:protectionLevel=["normal"|"dangerous"| "signature"|"signatureOrSystem"] /> <permission-group android:name="string" android:label="string resource" android:description="string resource" android:priority="integer" android:icon="drawable resource" /> ... </manifest>
其中,uses permission android的属性包括:
1、android:name
应用所请求的权限的名称,例如android.permission.READ_CONTACTS。
2、android:maxSdkVersion
指定该权限适用的最高SDK版本
3、android:minSdkVersion
指定该权限适用的最低SDK版本
4、android:required
是否将该权限视为内置到应用中
5、android:supportsRtl
表明您的应用程序支持从右到左的布局。
三、uses permission
uses permission是一个必需元素,用于表明应用程序需要哪些权限,这将在Android系统上运行。以下是一个例子:
<manifest package="string" xmlns:android="http://schemas.android.com/apk/res/android" android:sharedUserId="string" android:sharedUserLabel="string resource" android:versionCode="integer" android:versionName="string" android:installLocation=["auto"|"internalOnly"|"preferExternal"]> <uses-sdk android:minSdkVersion="integer" android:targetSdkVersion="integer" android:maxSdkVersion="integer" /> <uses-configuration /> <uses-feature android:name="string" android:glEsVersion="integer" android:required=["true"|"false"] /> <uses-permission android:name="string" android:maxSdkVersion="integer" android:minSdkVersion="integer" android:required=["true"|"false"] android:protectionLevel=["normal"|"dangerous"| "signature"|"signatureOrSystem"] /> <permission android:name="string" android:permissionGroup="string" android:protectionLevel=["normal"|"dangerous"|"signature"|"signatureOrSystem"]> ... </manifest>
uses permission的一些属性包括:
1、android:name
应用所请求的权限的名称,例如android.permission.READ_CONTACTS。
2、android:maxSdkVersion
指定该权限适用的最高SDK版本
3、android:minSdkVersion
指定该权限适用的最低SDK版本
4、android:required
是否将该权限视为应用程序的一部分
5、android:protectionLevel
指定此权限的保护级别
四、总结
在Android权限管理中,uses-permission扮演了重要的角色。使用uses-permission,可以指定应用程序需要哪些权限;通过uses permission android,可以申请需要使用的权限;使用usesPermissionFlags可以为权限增加标志位,在访问时加以区分不同的权限。