在我的应用程序中,我需要设置警报,当它们触发时,我试图在我的接收器中触发它们。
为了处理 Marshmallow 6.0 中的 Dozo 模式,如果设备版本大于或等于 6.0,我正在使用 alarmManger.setAlarmClock() 方法。除了OPPO设备之外,几乎所有设备都可以正常工作
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
final AlarmManager.AlarmClockInfo alarmClockInfo = new AlarmManager.AlarmClockInfo(fireDate.getTime(), pendingIntent);
alarmManager.setAlarmClock(alarmClockInfo, pendingIntent);
//alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, fireDate.getTime(), pendingIntent);
} else {
alarmManager.setExact(AlarmManager.RTC_WAKEUP, fireDate.getTime(), pendingIntent);
}
==================================================== ==================== 从终端,我使用以下命令获取日志:adb shell dumpsys 警报。
1. 对于其他品牌(我的应用程序 alarmManager.setAlarmClock() 方法结果):
Batch{b778e8c num=1 start=35988972 end=35988972 flgs=0x3}:
RTC_WAKEUP #0: Alarm{b9e89d5 type 0 when 1547501400600 ######.######}
tag=*walarm*:######.######.Reminder
type=0 whenElapsed=+9h49m0s741ms when=2019-01-15 03:00:00
window=0 repeatInterval=0 count=0 flags=0x3
Alarm clock:
triggerTime=2019-01-15 03:00:00
showIntent=PendingIntent{3dc5ea: PendingIntentRecord{d66ec2a ######.###### broadcastIntent}}
operation=PendingIntent{996c0db: PendingIntentRecord{d66ec2a ######.###### broadcastIntent}}
批次是唯一的,标志值设置为 0x3,这就是闹钟的方式。对于大多数品牌,结果是相同的,但在 oppo 中,标志设置为 0x8
2.对于OPPO手机(我的应用程序alarmManager.setAlarmClock()方法结果):
Batch{b778e8c num=1 start=35988972 end=35988972 flgs=0x8}:
RTC_WAKEUP #0: Alarm{b9e89d5 type 0 when 1547501400600 ######.######}
tag=*walarm*:######.######.Reminder
type=0 whenElapsed=+9h49m0s741ms when=2019-01-15 03:00:00
window=0 repeatInterval=0 count=0 flags=0x8
Alarm clock:
triggerTime=2019-01-15 03:00:00
showIntent=PendingIntent{3dc5ea: PendingIntentRecord{d66ec2a ######.###### broadcastIntent}}
operation=PendingIntent{996c0db: PendingIntentRecord{d66ec2a ######.###### broadcastIntent}}
3.对于OPPO手机(OPPO默认报警应用):
Batch{3450b8d num=1 start=464582537 end=464582537 flgs=0x9}:
RTC_WAKEUP #0: Alarm{32536c5 type 0 when 1547690400000 ######.###### whenElapsed 464582537 windowLength 0 maxWhenElapsed 464582537 repeatInterval 0 action }
tag=*walarm*:######.######.ALARM_ALERT
type=0 whenElapsed=+17h4m45s187ms when=2019-01-17 07:30:00
window=0 repeatInterval=0 count=0 flags=0x9
Alarm clock:
triggerTime=2019-01-17 07:30:00
showIntent=PendingIntent{ee6881a: PendingIntentRecord{97c18f0 ######.###### startActivity (whitelist: 902f275:+30s0ms)}}
operation=PendingIntent{3bc0f4b: PendingIntentRecord{2bd8d28 ######.###### broadcastIntent}}
在 opp 手机内部获取警报,它应该是一个批次,并且标志应该设置为 0x9
结论
其他手机: flag = 0x3 需要触发它作为警报,alarmManager.setAlarmClock() 设置 flag = 0x3,工作正常。
OPPO 手机:需要 flag =0x9 才能触发它作为闹钟。但是,alarmManager.setAlarmClock() 设置标志 = 0x8。
我应该调用什么方法来使 oppo 设备中的标志 = 0x9?