阅读Android SDK时可以发现, Android Manifest下有两个内部类, 一个是permission ,还有一个是permission_group。
这两个内部类是干什么的呢? 有什么区别呢?
对于Permission, 可能做过Android开发的人应该都知道, 这就是权限。 在这个类中定义了很多的权限,比如网络访问权限、蓝牙设备访问权限、振动器使用权限等等..
一般用法就是在 AndroidManifest.xml 中进行定义, 如下例:
这里面的<uses-permission android:name="android.permission.xxx" />就是权限定义。
一般我们都是在这边定义好, 不知道能不能动态授权噢.. 下次研究下!
那么permission_group是干什么的呢?
从SDK中可以看到, 这个类中只有很少的几个常量定义。究竟什么作用?
其实Android在定义 permission 时, 为每个Permission都进行了分组, 每一个Permission都有一个PermissionGroup属性。
来看一下Android源码(在frameworks/base/core/res /AndroidManifest.xml):
可以看到,这边先定义了一个PermissionGroup : android.permission-group.COST_MONEY, 然后又定义了两个Permission :
android.permission.SEND_SMS 和android.permission.CALL_PHONE , 需要注意的是,这两个权限中都一个android:permissionGroup属性,这个属性就指定了这个权限所属的PermissionGroup。
而PermissionGroup在定义时,仅仅制定了label和descrip , 就是说明一下这个权限组的作用,没什么其他用处。
下面总结一下:
permissiongroup,就是permission里面的一个tag。
主要作用是用来显示application需要的权限,
比如你使用了<uses-permission android:name="android.permission.INTERNET" />权限,
那么在android的setting->applications->manage applications->你的应用程序,显示的是需要“Network communication”权限,这个“Network communication”就是permissionGroup的label。
所以说permissiongroup只是一个逻辑分组,作用也只有显示应用程序权限给用户看的。
当然需要额外说明的是, 并不是所有的Permission都有PermissionGroup, 有的可能没有分组。 这些没有分组的Permission也会自己指定label, 以便告知用户这个权限的作用。