[置顶] Android学习之扩展android的权限管理
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
更多相关文章
- 自定义一个自己的Log
- Android(安卓)安全机制
- [Android] Web Console: Uncaught TypeError: Object [object Ob
- Android(安卓)网络开发
- 我的翻译:Saving Files
- 绕过身份检测,破解Android(安卓)SU
- android:sharedUserId="android.uid.system" 的使用
- Unity功能记录(五)------ Android(安卓)studio打包aar包后与unity
- PreferenceActivity