文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

高通Android 12/13 默认应用程序授予权限

2023-09-02 21:38

关注

一提到权限很多Android开发者都会想到 比如拨打电话 读取手机通讯录 定位 这些都是需要申请权限,Google Android 6.0之后(sdk 23) 需要app动态申请权限 或者权限组

我这里打个比方 比如需要在fm应用 默认打开mic权限 

我们需要知道这个默认应用程序的包名 (例如 xxx.com等)

PMS成功启动时并收到回掉systemReady回进行应用权限授予。如下代码所示

   @Override    public void systemReady() {                // If we upgraded grant all default permissions before kicking off.        for (int userId : grantPermissionsUserIds) {            mDefaultPermissionPolicy.grantDefaultPermissions(userId);        }            }

根据默认应用包名packageName进行筛选 包括后面GMS认证一些应用默认关闭一些权限 方法都是类似 依葫芦画瓢哈 对应修改路径/frameworks/base/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java

 public void grantDefaultPermissions(int userId) {        DelayingPackageManagerCache pm = new DelayingPackageManagerCache();        grantPermissionsToSysComponentsAndPrivApps(pm, userId);        grantDefaultSystemHandlerPermissions(pm, userId);        grantSignatureAppsNotificationPermissions(pm, userId);        grantDefaultPermissionExceptions(pm, userId);        //add by zm 2023/3/6        PackageInfo pkg = pm.getPackageInfo("xxx.com.fmradio");        if ((pkg != null) && doesPackageSupportRuntimePermissions(pkg)) {           setFMPackagePermissions(pm,pkg,userId);        }//add end        // Apply delayed state        pm.apply();    }

下面就是默认授权权限代码 如下所示 默认打开麦克风权限

public void setFMPackagePermissions(PackageManagerWrapper pm,PackageInfo pkg,int userId){+               Log.e(TAG, "zm add setFMPackagePermissions is start");+               grantRuntimePermissions(pm,pkg, MICROPHONE_PERMISSIONS, true, true, true, userId);+               Log.e(TAG, "zm add setFMPackagePermissions is end");+    }

高级一点的写法 根据list集合去过滤 后面还有其他的应用要打开一个 和多个或者关闭一个和多个权限 代码如下

  @SafeVarargs    private final void grantPermissionsToSystemPackage(PackageManagerWrapper pm, String packageName,            int userId, boolean systemFixed, Set... permissionGroups) {        if (!pm.isSystemPackage(packageName)) {            return;        }        grantPermissionsToPackage(pm, pm.getSystemPackageInfo(packageName),                userId, systemFixed, false ,                true , permissionGroups);    }

使用示例 如下所示 电话权限、短信权限 、通知栏消息权限

 grantPermissionsToSystemPackage(pm, verifier, userId, PHONE_PERMISSIONS, SMS_PERMISSIONS,                NOTIFICATION_PERMISSIONS);


9、然后编译代码 验证ok 到这里默认添加应用权限功能结束了。此文章只是抛砖引玉,具体其他平台根据项目实际需求进行修改,如有雷同,纯属巧合哈!

转载请注明出处谢谢  高通Android 12/13 默认应用程序授予权限_KdanMin的博客-CSDN博客

有一起想学framework可以加我wx (kdanmobile) 火热进行中 

其他学习链接

Android 中的权限  |  Android 开发者  |  Android Developers

来源地址:https://blog.csdn.net/qq_15950325/article/details/129359322

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯