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

这篇具有很好参考价值的文章主要介绍了高通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文章来源地址https://www.toymoban.com/news/detail-428924.html

到了这里,关于高通Android 12/13 默认应用程序授予权限的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

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

    1、 Android adb push ota全量包 如下图所示 2、当前设备是a分区 如下图所示  3、adb root -adb enable-verity-adb reboot  如下图所示  4、adb ota包升级成功 升级完成之后记得 reboot 重启一下 如下图所示 5、当前设备成功切换b分区 如下图所示  6、到这里基本就结束了, ota 升级相关 Andr

    2024年02月06日
    浏览(47)
  • Android12.0首次开机默认授予app运行时权限(去掉运行时授权弹窗)第二种方法

      在12.0的系统产品开发中,在6.0以后对于权限的申请,都需要动态申请,所以会在系统首次启动后,在app的首次运行时,会弹出授权窗口,会让用户手动授予app运行时权限,在由于系统产品开发需要要求默认授予app运行时权限,不需要用户默认授予运行时弹窗,所以需要在首

    2024年02月09日
    浏览(40)
  • 高通 Android 8/9/12/13 兼容U盘识别extfat模式

    Android本身不支持extfat格式 需要通过nofuse 打kernel补丁方式去实现  Android 8/9 1、kernel/msm-4.9/arch/arm64/configs/sdm670-perf_defconfig 增加代码如下( 需要提交编译kernel记得git add sdm670-perf_defconfig 不需要commit哈!否则编译会还原这个文件,切记!) 2、kernel/msm-4.9/arch/arm64/configs/sdm670_def

    2024年02月04日
    浏览(44)
  • 应用程序-特定 权限设置并未向在应用程序容器 不可用 SID (不可用)中运行的地址 LocalHost (使用 LRPC) 中的用户 NT SERVICE\SQLSERVERAGENT授予针对 CL...

    很久以前发现我们的业务服务器上出现一个System的系统严重错误,查找很久都没有找到解决办法,今日再次查看服务器发现报错更频繁,于是就搜集各种资料进行查找解决办法,终于找到了一个解决办法。 错误截图介绍 如下: 日期 2020-11-23 00:00:00 日志 Windows NT (System) 源 Mi

    2024年02月12日
    浏览(23)
  • Android 10.0 app授予通知权限 默认开启通知

    在app开发中 会需要发送通知,但在8.0以后增加了通知权限,必须先开启通知权限才能发送通知 像这样申请开启通知权限 打开通知开关 app中开启通知权限如下 1.判断是否有通知权限

    2023年04月08日
    浏览(32)
  • 开发安全Java应用程序的13条规则((Mark)

    漏洞喜欢隐藏在复杂性中,因此在不牺牲功能的情况下使代码尽可能简单。使用成熟的设计原则(例如DRY)(不要重复),将帮助您编写更易于查看问题的代码。 始终在代码中公开尽可能少的信息。隐藏实施细节支持可维护和安全的代码。这三个技巧将大大有助于编写安全的

    2024年04月14日
    浏览(26)
  • C#学习教程12——Windows窗体应用程序

    WinForm 是 Windows Form 的简称,是基于 .NET Framework 平台的客户端(PC软件)开发技术,一般使用C#编程。Windows应用程序与Windows操作系统的界面类似,每个界面都是由窗体构成的,并且能通过鼠标单击、键盘输入等操作完成相应的功能。 在Visual Studio 2019软件中,点击创建新项目。

    2024年02月03日
    浏览(41)
  • Android 12.0根据包名授予读取IMEI权限

     在12.0的产品开发中,对于读取设备的imei sn号功能也是常有的,而在10.0以后对于读取imei也是受权限要求越来越多了一般的app是读取不到这个权限了,根据产品需求需要读取这个权限,所以需要在系统中对这个app授权让它读取包名,从而实现功能  首选在app中看如何获取ime

    2024年02月06日
    浏览(40)
  • 使用LabVIEW打开默认应用程序中的文档(PDF,Word,Excel,Html)

    问题详情 我想让我的LabVIEW VI使用默认应用程序打开硬盘上的文档。如何实现? 解决方案 有一个名为 \\\"Open a Document on Disk.vi\\\" 的 VI,它可以在操作系统注册的默认应用程序中打开任何文档(Word、Excel、HTML 等)。该 VI 不在面板上,而是位于 LabVIEWvi.libPlatformbrowser.llbOpen a Doc

    2024年03月12日
    浏览(37)
  • 保护您的Android应用程序:Android应用程序安全一览

    我们都知道Android是为所有人设计的——开放、面向开发者、面向用户,这种开放性为今天和明天的移动技术提供了很多便利。然而,开放性也带来了需要妥善处理的安全风险。 安全是我们所有人都关注的重要问题。无论是我们的个人数据、电子邮件、电话号码、凭证、服务

    2024年02月03日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包