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

Posted KdanMin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高通Android 12/13 默认应用程序授予权限相关的知识,希望对你有一定的参考价值。

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

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

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

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

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

5、根据默认应用包名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();
    

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

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");
+    

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

  @SafeVarargs
    private final void grantPermissionsToSystemPackage(PackageManagerWrapper pm, String packageName,
            int userId, boolean systemFixed, Set<String>... permissionGroups) 
        if (!pm.isSystemPackage(packageName)) 
            return;
        
        grantPermissionsToPackage(pm, pm.getSystemPackageInfo(packageName),
                userId, systemFixed, false /* ignoreSystemPackage */,
                true /*whitelistRestrictedPermissions*/, permissionGroups);
    

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

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


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

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

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

其他学习链接

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

以上是关于高通Android 12/13 默认应用程序授予权限的主要内容,如果未能解决你的问题,请参考以下文章

高通Android 12/13修改系统电池容量大小

解决高通 Android 12/13 ota升级失败问题

高通 Android 12/13 实现短按3秒左右 自动关机功能

高通 Android 12/13 关闭wifi网络能否上网检测,解决机器重启不能自动回连wifi问题

高通Android 13默认切换免提功能

系统方向学习9--android 10.0 去掉未知来源弹窗 默认授予安装未知来源权限