Gab*_*one 12 android alarmmanager android-permissions android-11
我们开发了一个 Android SDK,在测试 Android 11 Beta 时,我们发现了一个似乎尚未报告的问题。
在 Android 11 中,为位置、麦克风和相机权限引入了新的一次性权限。使用此选项,一旦用户离开应用程序,权限就会被撤销(更多详细信息可在此处找到)。
问题是,在应用程序不再处于前台的一小段时间之后(不需要杀死应用程序,只需最小化就足够了),所有未来预定的警报或作业都会被删除,就像应用程序被强制一样被杀。这仅发生在此级别的权限下。拒绝或提供其他级别会按预期保留先前安排的警报或作业。我们已在 Beta 3 版本中使用 RPB3.200720.005 版本号在 Pixel 2 模拟器中重现了这一点。在此repo 中,您可以找到用于重现错误的示例应用程序。
这个单一的活动应用程序会在接下来的 5 分钟内安排一个闹钟响铃,并在 5 到 6 分钟内触发一个作业。屏幕上有三个按钮,每个按钮都会触发相应的权限请求。JobService 和 BroadcastReceiver 类只记录它们已被触发。可以通过以下步骤重现该情况:
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 Issue Tracker上提交了一个问题,如果 Google 回答了这个问题,我们将保持更新。
问题已“解决”。问题实际上是 Android Studio 在关闭应用程序后撤销权限时调用强制关闭。
谷歌的实际回应:
非常感谢您提出这个问题,并提供示例代码来重现它。经过进一步调查,我们发现这是由于 Android Studio 与通过“运行”命令启动的应用程序之间的交互造成的。
具体来说,当 Android 撤销某个应用程序的权限时,它会终止该应用程序的进程。我们发现,当 Android Studio 观察到其启动的应用程序不再运行时,它会通过 adb 发送强制停止命令。
如果应用程序是通过启动器启动的(包括在连接到 Android Studio 的模拟器中),则应用程序不会被强制停止,并且警报和作业都会按预期运行。
因此,除了在开发阶段之外,它不会引起其他问题。有关更多信息,请查看问题中链接的 Android 问题跟踪器。
| 归档时间: |
|
| 查看次数: |
347 次 |
| 最近记录: |