由于Android12升级,在调用精确闹钟的方法的时候,必须进行SCHEDULE_EXACT_ALARM权限的检查。具体操作请参考:适配Android 12的行为变更-----精确的闹钟权限_袁美丽..的博客-CSDN博客_android 闹钟权限

但是最近在做新机种的时候,在S平台上,虽然clock调用了精确闹钟的方法,但是没做SCHEDULE_EXACT_ALARM权限的检查,没有任何影响(正常来说,如果不处理,在调用精确闹钟的方法时肯定会crash)

经过调查发现:
framework给clock进程加了doze mode白名单

<!-- Whitelist of what components are permitted to run in the background -->
<allow-in-power-save package="com.android.deskclock" />

导致canScheduleExactAlarms的值一直返回的是true

AlarmManagerService$mService#canScheduleExactAlarms
@Override
public boolean canScheduleExactAlarms(String packageName) {......if (!isExactAlarmChangeEnabled(packageName, userId)) { // Check the feature flag is on or offreturn true;}return isExemptFromExactAlarmPermission(packageUid) // ★ Will check DozeMode white list here|| hasScheduleExactAlarmInternal(packageName, packageUid);
}AlarmManagerService#isExemptFromExactAlarmPermission
boolean isExemptFromExactAlarmPermission(int uid) {return (UserHandle.isSameApp(mSystemUiUid, uid)|| UserHandle.isCore(uid)|| mLocalDeviceIdleController == null|| mLocalDeviceIdleController.isAppOnWhitelist(UserHandle.getAppId(uid))); // ★ Check DozeMode white list
}

不仅clock会有此问题,如果其他应用也加了doze mode白名单,并且也有此逻辑,同样会出现此现象。可以参考一下。

Android12,SCHEDULE_EXACT_ALARM权限检查值一直返回true相关推荐

  1. return true Java方法_java - 如何检查方法是否返回true或false?_java_酷徒编程知识库...

    在Java中,if语句检查它操作数是true还是false,操作数只能是booleanboolean b = true; if (b) { System.out.println("b was ...

  2. java 抛出异常 返回值_java – 返回true或false或抛出异常

    java version "1.7.0_75" 你好, 只是想知道比较下面两个函数的首选最佳实践是什么. 第一个抛出应该在调用函数中捕获的NullPointerException. ...

  3. sql语句 两值对比返回true 或者false 关于程序的题目

    解法一: create table DemoTable (FirstName varchar(100),LastName varchar(100) );insert into DemoTable va ...

  4. 单值二叉树:如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。 只有给定的树是单值二叉树时,才返回 true;否则返回 false。

    前言: 二叉树刷题是有固定思维的,请移步 README]二叉树刷题框架 单值二叉树 题目 点击跳转:LeetCode 根据框架描述,我只需判断一个结点,如果这个节点是null就返回true,不是的话, ...

  5. python匿名基数(lamdba):给你一个整数数组nums,如果任一值在数组中出现至少两次,返回True;如果数组中每个元素互不相同,返回False,用一行代码解决

    """ 给你一个整数数组nums,如果任一值在数组中出现至少两次,返回True:如果数组中每个元素互不相同,返回False,用一行代码解决 例: nums = [1,2, ...

  6. 编制一个返回值为bool型的函数isPrimer(),用于判断参数是否为素数(是素数返回true,否则false),自编main函数用于测试

    /* * Copyright (c) 2013, 烟台大学计算机学院 * All rights reserved. * 作 者: 李家豪 * 完成日期:2013 年11月13日 * 版 本 号:v1. ...

  7. 检查值是否是JavaScript中的对象

    如何检查值是否是JavaScript中的Object? #1楼 尝试这个 if (objectName instanceof Object == false) {alert('Not an objec ...

  8. 实例:ABAP权限对象设计与权限检查的实现

    Ps:发觉现在的CSDN越来越烂了,编辑超级不人性化,一按退格就退出编辑,而且敏感词直接封号,吐槽一下,开始正文. 在测试机里面创建一张新表ZEMP_DEP,并插入一点记录. 插入几条记录: 创建权限 ...

  9. 权限检查authority-check

    在报表开发过程中,如果是几家公司代码使用同一个报表的时候一般都要做权限的检查了,这样可以防止没有其它公司代码的权限不能访问到相关的信息. authority-check介绍 在abap中,我们经常会使 ...

最新文章

  1. PHPExcel 出现open_basedir restriction in effect的解决办法
  2. USE SysBench test Mysql and PostgreSQL - 2
  3. python爬虫详细步骤-Python爬虫实践入门,超详细
  4. 计算机管理学科,计算机学院学科经费使用与管理细则(试行)
  5. VTK:PolyData之ConvexHull
  6. Dom4j遍历解析XML测试
  7. PHP函数-判断字符是否在于指定的字符串中
  8. Makefile之静态模式(7)
  9. 设置PDF文件默认缩放比例
  10. 实际打印页码偏上_4个Excel打印小技巧,想怎么打就怎么打?
  11. Java面试八股文(素材来自网络)
  12. 动词变名词的变化规则_高中英语动词变名词的变化规则
  13. Redmine安装与入门指南
  14. tomcat在45秒内没有启动,启动超时
  15. [PTA] 7-11 计算平均分
  16. 2020美团笔试题目:送餐小区数量
  17. 【题解】食物链(并查集)
  18. python count函数时间复杂度_关于python:了解如何测量函数的时间复杂度
  19. 《Java SE实战指南》05-07:分隔符(Separators)
  20. 你想了解ADSS和OPGW光缆之间的区别吗?

热门文章

  1. Ubuntu16.04安装gazebo8并加载模型库
  2. 课代表:ChatGPT及大模型专题研讨会
  3. 电饭锅鸿蒙系统,有了美的轻食电饭煲,人们更加确定了做饭工具的重要性
  4. 蓝桥杯 ALGO-7 逆序对
  5. VR和AR未来的对垒
  6. 手推优化算法,了解KKT和closed-form solution是如何使用的
  7. hud.java_什么是HUD
  8. 招聘:JAVA软件开发工程师
  9. t-SNE数据降维(2维3维)及可视化
  10. uniapp Apple iOS 绑定解绑