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

2018-12-05  本文已影响0人  Guoke24

参考:
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默认授权的。

上一篇下一篇

猜你喜欢

热点阅读