作为Android的应用开发者,对于android的权限机制总是感觉很奇怪,为什么要有权限这个东西?为什么要在AndroidManifest里面写uses-permission 这样东西?以前一直困惑,但是用着没什么问题也就认了,没去好好深究过,这回就来好好看下吧。
原来在设备上有这么个文件/system/etc/permissions/platform.xml 打开来看
<permission name="android.permission.INTERNET" > <group gid="inet" /> </permission> <permission name="android.permission.CAMERA" > <group gid="camera" /> </permission> <permission name="android.permission.READ_LOGS" > <group gid="log" /> </permission> <permission name="android.permission.READ_EXTERNAL_STORAGE" > <group gid="sdcard_r" /> </permission> <permission name="android.permission.WRITE_EXTERNAL_STORAGE" > <group gid="sdcard_rw" /> </permission> <permission name="android.permission.WRITE_MEDIA_STORAGE" > <group gid="media_rw" /> </permission>
是这样的内容,很眼熟吧,这不就是在应用的AndroidManifest里面用到的use-permission吗?
下面的gid 看起来也很眼熟吧,sdcard_rw这个最为常见,对,就是sdcard上的文件的组
drwxrwxr-x system sdcard_rw 2013-02-23 08:45 baidu
所以根据经验猜测,莫非这个xml就是权限与组的对应关系? 只要apk申明了这个权限就会通过这个xml文件找到对应的要加入的组里。有种恍然大悟的感觉,原来android的权限管理还是linux的权限管理的变种,万变不离其宗啊!
验证猜测是否正确的方法就是--看代码:通过查找谁用到了这个文件很容易就发现 是PackageManagerService在解析它,果然是将permission和gid关联起来。
时间: 2024-10-10 06:45:59