Android权限机制验证性实验
来源:互联网 发布:软件项目维护合同范本 编辑:程序博客网 时间:2024/05/29 04:41
在PackageInstaller源码分析(二) 中提到,Android在安装App的时候,会更新/data/system/packages.xml,/data/system/packages.list和/data/system/users/0/package-restrictions.xml这三个文件。并且,在packages.xml中记录有app申请的全新信息,在packages.list文件中记录了App的Gid信息。我们知道,Android Permission机制是基于Linux权限机制的,也就说App申请的对应的permission是通过向App添加对应的gid完成,下面我们就通过实验证实这一点。
一、 实验源码
button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub PackageManager pm=getPackageManager(); try { int[] gids=pm.getPackageGids("org.ncnipc.androidgroup.venscor.poc"); for(int i:gids){ tv.append(i+"\n"); } } catch (NameNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } }});
二、 分析
运行实验程序,查看结果,发现程序的打印的gid是:3003,1028,1015,这和packages.list文件中记录的gid是对应的。
接着,我们查看App申请了哪些权限,对于App的manifest文件和packages.xml文件,这也是对应的。
最后,我们查看一下这些权限是不是全部对应到gid为3003,1028,1015的这三个组。
在/system/core/include/private/android_filesystem_config.h文件中,对用户/用户组做了宏定义。Android权限机制正是基于用户、用户组的。
在/etc/permission.xml查看这三个gid对应的权限。
这里也说明了android.permission.WRITE_EXTERNAL_STORAGE和android.permission.ACCESS_ALL_EXTERNAL_STORAGE包含了android.permission.READ_EXTERNAL_STORAGE权限,即只要申请了前两个中的任意一个,都将自动拥有后一个权限。这也是为什么在package.xml中多出一个android.permission.READ_EXTERNAL_STORAGE权限的原因。
至此,已经说明了上面10个权限中的两个已经和底层的gid挂钩,即因为App的gid中已经包含上面三个gid,所有权限已经获得。那么还剩下8个权限咋回事?
上面申请的权限中,第2,6,7,8,9属于Normal级的权限,直接申请不需要通过用户同意就能获得,所以不考虑,最后一个是5.1之后deprecated的权限,也不考虑,剩下第4,5和10个权限。第4,5个属于location组的权限,第10个属于phone组的权限。这里有个猜想不知道对不对,就是Android权限应该有两种,一种是用了系统资源,即Linux资源;另一种没有使用系统资源。对于前一种,在App安装授予权限的过程中,需要把platform.xml中定义的gid添加到App中,以后对于Linux底层的系统资源能够调用。对于后者,在platform.xml中没有定义gid和permission的对应关系,由于其也不调用系统资源,所以直接在framework层就可以检测。
- Android权限机制验证性实验
- Hadoop冗余机制实验验证
- Android权限机制
- Android权限机制
- Android权限机制
- Android权限机制
- Android的权限机制
- Android的权限机制
- Android的权限机制
- android 权限机制分析
- android 权限permission机制
- Android安全机制--权限
- Android存储权限机制
- Android的权限机制
- Android中的权限机制
- Android权限机制
- Android权限机制
- android新权限机制
- C#字面值
- POJ Anniversary party By Assassin
- hdu 1814 和平委员会(2-sat入门题 字典序最小解)
- hdu 5115 Dire Wolf【区间dp】好题
- js中强制类型转换
- Android权限机制验证性实验
- 二分查找
- AOP入门
- xUtils
- 哈希表之开放地址的三种方法
- 小话设计模式(十七)观察者模式
- C语言动态数组
- 51nod-1113 矩阵快速幂
- 生成格雷码 java实现