android - 警报管理器不适用于 Android 版本 9
问题描述
应用要求是在任何指定时间触发警报并在该特定时间执行指定任务。为了实现这一点,我使用了AlarmManager
. 但它不适用于 Android 版本 9。
我使用了在 Android 7.0 上运行的警报管理器。
我使用setInexactRepeating()
了AlarmManager
.
我尝试使用以下代码来做到这一点:
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
am.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
我希望AlarmManager
必须在 Android 版本 9 上的指定时间触发。
解决方案
这就是我为解决问题所做的:
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT)
am.set(AlarmManager.RTC_WAKEUP, stopTrackingAtMidnight, PendingIntent);
else
am.setExact(AlarmManager.RTC_WAKEUP, stopTrackingAtMidnight, PendingIntent);
setExact()
方法对我有用!
推荐阅读
- angular - 手动检查复选框后无法以编程方式取消选中:Angular
- c - C中的有符号整数溢出
- python - 测试列车拆分:错误
- java - 如何在 Java 中创建 JButton 数组?
- java - 我应该使用像 Fresco 这样的图像加载库吗?
- java - 撤消过去 2 天在 android studio 中执行的所有操作?
- angular - 从 Angular 6 调用导入的 javascript
- angular - 初始数据的 TypeScript 可以使用接口类型或类类型哪种方式更好?
- algorithm - 无法理解算法 P146 中最差时间复杂度的证明
- ios - react-native run-ios and xcode build two different apps