美文网首页
android权限申请流程分析

android权限申请流程分析

作者: nich | 来源:发表于2021-12-29 13:55 被阅读0次

    android11代码为例

    andorid权限申请一般流程分为:

    checkSelfPermission(@NonNull String permission) 检查是否需要权限requestPermissions(@NonNull String[] permissions, int requestCode) 申请权限onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) //权限回调

    主要研究checkSelfPermission和requestPermissions方法

    checkSelfPermission

    调用context.checkSelfPermission接下来看context实现类contextimpl

    调用到ams

    调用pkms的checkUidPermission

    mPermissionManagerService.checkUidPermission(permName, uid);

    再进入PermissionManagerService

    一顿操作完事后把结果返回回来

    总结来说就是checkSelfPermission-》ams—》pkms-〉PermissionManagerService-》完事

    requestPermissions

    点击进去看到的是调用framework/base/core/java/android/app/activity里面的

    隐式调用

    接下来通过action_request_permissions搜索到package/apps/permissioncontroll里面有这个东西,这个下面是android手机一些系统自带的apk可以看到androidmanifest里面

    接下来看activity(其实就是申请权限的时候弹出的那个弹框界面)

    这里主要分析应许的时候

    groupState.mGroup.grantRuntimePermissions(true, doNotAskAgain,groupState.affectedPermissions);授予权限

    reportRequestResult()更新授权结果

    主要看授权代码在AppPermissionGroup.java里面

    看grantRuntimePermissions里面的这个方法,persistchanges

    调用pkms的grantRuntimePermission方法就是packagemanageservice方法

    然后进入grantruntimepermission

    看这个callback的onPermissionGranted

    他又跑到pkms里了

    创建xml文件用于记录权限状态

    requestPermissions总结:requestPermissions ->GrantPermissionsActivity->pkms->PermissionManagerService—>PKMS中的onPermissionGranted->记录在setting里面

    相关文章

      网友评论

          本文标题:android权限申请流程分析

          本文链接:https://www.haomeiwen.com/subject/hrrvqrtx.html