Android授权app源码函数微解读二

参考:
Android (6.0) M 请求权限

(5)简单说下请求权限的流程
App-->Activity.requestPermissions-->然后startActivityForResult-->然后调到PackageInstaller里面的GrantPermisslonsActivity,然后show给用户看,你需要不需要申请权限。如果同意->就调用PMS的grantRuntimePermission获取到权限并且调用setResuletAndFinsh函数CallBack返回给
App--app只要需要在Activity中重写OnRequestPermissionResult方法。
(2)Activity Intent的内容Action就是ACTION.Request_permissionS 数据包就是permission.name

6.Apk安装时会判断权限类型,对于dangerous的权限,会判定为runtimePermission,安装时不会对User赋予此权限.
其他类型的权限,则安装时赋予给所有的User
grantPermissionsLpw --获取权限的接口
-writeRuntimePermissionsForUserLpr 写入xml
对应的runtime-permissionos.xml 每个user维护一份

com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java

getPackageManager().updatePermissionFlags

com/android/server/pm/PackageManagerService.java
中发现的另一组调用链

updatePermissionFlags --> mSettings.writeRuntimePermissionsForUserLPr(userId, false)

还有一个类,com/android/server/pm/DefaultPermissionGrantPolicy.java,应该是给系统APP默认授权的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 13,108评论 2 59
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,718评论 0 17
  • Android系统在MarshMallow之前,权限都是在安装的时候授予的,虽然在4.3时,Google就试图在源...
    看书的小蜗牛阅读 17,903评论 7 47
  • 前言 Android将安全设计贯穿系统架构的各个层面,覆盖系统内核、虚拟机、应用程序框架层以及应用层各个环节,力求...
    FeelsChaotic阅读 9,358评论 4 17
  • 雨滴挂在头发上 蓑衣裹住了冰凉 江边的小船撑不起悔怨 怨那人已经不再关心潮湿的悲伤 难走的路还是要走 想明明白白 ...
    黎青辰阅读 288评论 0 3