Android 导致取消后台计划作业和警报的一次性权限
我们开发了一个安卓SDK,在测试安卓11测试版时,我们发现了一个似乎尚未报告的问题 在安卓11中,位置、麦克风和摄像头权限引入了新的一次性权限。使用此选项,一旦用户离开应用程序,权限就会被撤销(可以找到更多详细信息) 问题是,在应用程序不再位于前台的短时间后(不需要关闭应用程序,只需最小化就足够了),所有未来计划的警报或作业都会被删除,就像应用程序被强制关闭一样。 这仅在具有此权限级别的情况下发生。 拒绝或提供其他级别,按预期保留先前计划的警报或作业。 我们在Beta 3版本中复制了这一点,在一个像素2仿真器中使用RPB3.200720.005版本号。在这里,您可以找到一个复制bug的示例应用程序 此单一活动应用程序计划在接下来的五分钟内发出警报,并在5-6分钟内触发作业。 屏幕上有三个按钮,每个按钮触发相应的权限请求。 JobService和BroadcastReceiver类仅记录它们已被触发。 在执行以下步骤后,可以再现该情况:Android 导致取消后台计划作业和警报的一次性权限,android,alarmmanager,android-permissions,android-11,Android,Alarmmanager,Android Permissions,Android 11,我们开发了一个安卓SDK,在测试安卓11测试版时,我们发现了一个似乎尚未报告的问题 在安卓11中,位置、麦克风和摄像头权限引入了新的一次性权限。使用此选项,一旦用户离开应用程序,权限就会被撤销(可以找到更多详细信息) 问题是,在应用程序不再位于前台的短时间后(不需要关闭应用程序,只需最小化就足够了),所有未来计划的警报或作业都会被删除,就像应用程序被强制关闭一样。 这仅在具有此权限级别的情况下发生。 拒绝或提供其他级别,按预期保留先前计划的警报或作业。 我们在Beta 3版本中复制了这一点,在一
adb shell dumpsys alarm | grep com.example.permissions.app
和adb shell dumpsys jobscheduler | grep com.example.permissions.app
,以查看警报和作业是否已调度李>
adb shell dumpsys alarm | grep com.example.permissions.app
和adb shell dumpsys jobscheduler | grep com.example.permissions.app
。警报和作业将不再出现李>
我们还提交了一个关于的问题,如果谷歌回答了,我们将更新这篇文章。问题已经“解决”。问题实际上是Android Studio在关闭应用程序后权限被撤销时调用了强制关闭 谷歌的实际回应是: 非常感谢您提出这个问题并提供示例代码 复制它。经过进一步调查,我们发现 这是由于Android Studio与通过 “运行”命令 具体来说,当Android撤销一个应用的许可时,它就会终止该许可 应用程序的进程。我们发现Android Studio发送了一个强制停止命令 当亚洲开发银行发现其启动的应用程序不再运行时,它会通过亚洲开发银行 如果应用程序是通过启动器启动的(包括在模拟器中 连接到Android Studio),应用程序不会强制停止,并且 警报和作业均按预期运行
所以,除了在开发阶段,它不会引起其他问题。有关更多信息,请查看问题中链接的Android问题跟踪器。不确定最终版本的Android 11是否会修复此问题,但您可以在此处阅读: