一提到权限很多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文档到电脑,方便收藏和打印~
2024-01-21
2023-10-28
2023-10-28
2023-10-27
2023-10-27
2023-10-27
2023-10-27
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0