Android学习之扩展android的权限管理

11 篇文章 0 订阅
1 篇文章 0 订阅

Android学习之扩展android的权限管理

以CyanogenMod中关于动态开启/关闭APK的指定权限功能为例来分析

CyanogenMod在7.0的时候提供了revoke permission的功能, 可以从设置->CM设置->通用设置->权限管理, 打开这个功能. 从而可以动态的管理应用程序的权限.

具体介绍参见http://wiki.cyanogenmod.com/wiki/CyanogenMod_Settings


相关代码:

1. CM设置对应的代码为packages/apps/CMParts

从其AndroidManifest.xml中, 可以看出它需要有system的权限,这样才能保证它可以操纵permission相关的framework提供的接口和服务

android:sharedUserId="android.uid.system"

2. 在frameworks/base/core/java/android/widget/中增加了处理permission on/off的新的类:AppSecurityEditablePermissions

3. 对PackageManager.java/PackageManagerService.java等frameworks/base/core/的PM的逻辑进行了修改.

   GrantedPermissions/SharedUserSetting中增加了新的revokedPermissions和effectivePermissions用来进行permission扩展的属性.

  在PackageManagerService.java中的checkPermission,checkUidPermission函数, 增加了对revokedPermissions和effectivePermissions的检查逻辑,从而保证Setting中修改过的permission在运行时,能够生效.

4. 对于revokedPermissions和effectivePermissions的初始化

   getRevokedPermissions/setRevokedPermissions/updateEffectivePermissions

          5. 在系统中增加了一个叫做android.permission.REVOKE_PERMISSIONS的权限

参考资料:

apex: http://profsandhu.com/zhang/pub/apex.pdf
android security: https://www.blackhat.com/docs/webcast/bhwebcast30_anderson.pdf

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值