关于Android 权限管理的几点认识

作为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

关于Android 权限管理的几点认识的相关文章

Android权限管理原理(含6.0-4.3)

Android 4.3-5.1 AppOpsManager动态权限管理(官方不成熟的权限管理) AppOpsManager 是Google在Android4.3-Android5.0引入的动态权限管理方式,但是又与Google觉得不成熟,所以在每个发行版的时候,总是会将这个功能给屏蔽掉.国内一些早期版本的权限动态管理的表现类似,这里用CyanogenMod12里面的实现讲述一下,国内的ROM源码拿不到,不过从表现来看,实现应该类似. 在一开始,其实Google将权限的动态管理放在每个服务内部,类

Android 权限管理(持续整理)

1. Android 6.0之后,APP直接安卓,运行时询问用户授予相关权限,此时系统弹出一个对话框,(这个对话框不能由开发者定制) 同时用户也可以在手机的"设置"中对于某个App进行权限管理 注意:这个对话框不是系统自动弹出,而是开发者在调用必须用户授权的方法时,在调用之前检查(如果有授权直接调用)并请求用户权限,否则可能因没有授权而直接程序崩溃 重点:在某一个需要用户权限的地方检查并请求用户权限,否则程序崩溃 2. 权限分类 是否涉及用户隐私,权限分为两类:第一类不涉及隐私,在Ma

Android权限管理PermissionsDispatcher2.3.2使用+原生6.0权限使用

PermissionsDispatcher2.3.2使用 Android6.0权限官网https://developer.android.com/about/versions/marshmallow/android-6.0-changes.html?hl=zh-cn系统权限:https://developer.android.com/training/permissions/index.html?hl=zh-cn权限的最佳做法:https://developer.android.com/trai

Android权限管理知识学习记录

一.Android权限背景知识 在Android 6.0之前,所申请的权限只需要在AndroidManifest.xml列举就可以了,从而容易导致一些安全隐患,因此,在Android 6.0时,Google为了更好的保护用户隐私提出了新的权限管理机制,同时将其分为两大类: (1)Normal Permissions Normal Permission一般不涉及用户隐私,是不需要用户进行授权的,比如手机震动,访问网络等. (2)Dangerous Permission Dangerous Perm

android 权限管理和签名 实现静默卸载

为了实现静默卸载, 学了下android的安全体系,记录如下 最近在做个东西,巧合碰到了sharedUserId的问题,所以收集了一些资料,存存档备份. 安装在设备中的每一个apk文件,Android给每个APK进程分配一个单独的用户空间,其manifest中的userid就是对应一个Linux用户都会被分配到一个属于自己的统一的Linux用户ID,并且为它创建一个沙箱,以防止影响其他应用程序(或者其他应用程序影响它).用户ID 在应用程序安装到设备中时被分配,并且在这个设备中保持它的永久性.

玩转Hook——Android权限管理功能揭秘(一)

题记一:各大安全软件公司对此项技术可能都有一定的技术保密,在老东家也不例外,由于种种原因未能参与此项技术研发甚是遗憾,也未能接触到其源码,只能自行研究并与各位共享并探讨一下技术方案,所以在此也提醒各位,由于本文所述均为自己在有限机型上实验的结果,不保证对其他机型上的兼容性,也不保证可能引发的无限重启等技术风险. 题记二:谨以此文献给前同事huzhong.zhongjihong两位大牛,感谢二位对我技术上,尤其是Android Native方面的点拨! 随着Android设备上的隐私安全问题越来越

Android获取设备隐私 忽略6.0权限管理

1.前言 (1).由于MIUI等部分国产定制系统也有权限管理,没有相关api,故无法判断用户是否允许获取联系人等隐私.在Android 6.0之后,新增权限管理可以通过官方api判断用户的运行状态: (2).我们指定targetSdkVersion为23或者之后我们还需要在运行时请求这些所需的权限.这很重要,因为已经出现了很多开发者把targetSdkVersion飙到了最新,然后发现自己的app疯狂的崩溃,这是由于他们没有实现执行运行时权限请求的代码.当你已经把一个targeting API

Android中的权限管理(基于uid gid gids setUid)

我们首先来说一下传统的Linux基于uid,gid的权限管理机制: 1.用户的uid gid gids: Ubuntu操作系统当前登陆的用户是jltxgcy,那么该用户的uid为jltxgcy,gid也是jltxgcy,那么gids怎么查看呢? 答案是使用命令:cat /etc/group | grep jltxgcy.如下图: 用户的gids的名字为adm,dialout,cdrom,plugdev,lpadmin,admin,sambashare.此本分请参考linux用户组./etc/gr

Android 6.0 - 动态权限管理的解决方案(转)

转自:http://www.cnblogs.com/dubo-/p/6018262.html Android 6.0 - 动态权限管理的解决方案 转载请标注 Android 6.0版本(Api 23)推出了很多新的特性, 大幅提升了用户体验, 同时也为程序员带来新的负担. 动态权限管理就是这样, 一方面让用户更加容易的控制自己的隐私, 一方面需要重新适配应用权限. 时代总是不断发展, 程序总是以人为本, 让我们为应用添加动态权限管理吧! 这里提供了一个非常不错的解决方案, 提供源码, 项目可以直