iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >高通Android 12/13 默认应用程序授予权限
  • 342
分享到

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

androidandroidstudioide 2023-09-02 21:09:23 342人浏览 独家记忆
摘要

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

一提到权限很多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

--结束END--

本文标题: 高通Android 12/13 默认应用程序授予权限

本文链接: https://www.lsjlt.com/news/391441.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作