在跟踪器上添加链接问题: https ://code.google.com/p/android/issues/detail?id=216581&thanks=216581&ts=1468962325
所以我今天在我的 Nexus 5X 上安装了 DP5 Android 7.0 版本。我一直在开发一个使用 Android 的 AlarmManager 类在特定时间安排本地通知的应用程序。在此版本之前,该代码在运行 KitKat、Lollipop 和 Marshmallow 的设备上运行良好。
以下是我安排警报的方式:
Intent intent = new Intent(context, AlarmManagerUtil.class);
intent.setAction(AlarmManagerUtil.SET_NOTIFICATION_INTENT);
intent.putExtra(AlarmManagerUtil.REMINDER_EXTRA, Parcels.wrap(reminders));
intent.putExtra("time", when.getMillis());
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
if (alarmManager != null) {
if (Build.VERSION.SDK_INT >= 23) {
alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, when.getMillis(), pendingIntent);
} else if (Build.VERSION.SDK_INT >= 19) {
alarmManager.setExact(AlarmManager.RTC_WAKEUP, when.getMillis(), pendingIntent);
} else {
alarmManager.set(AlarmManager.RTC_WAKEUP, when.getMillis(), pendingIntent);
}
我的“SET_NOTIFICATION_INTENT”的AlarmManagerUtil @onReceive 看起来像这样:
public void fireNotification(Context context, Intent intent) {
List<Reminder> reminderToFire = Parcels.unwrap(intent.getParcelableExtra(REMINDER_EXTRA));
long timeToFire = intent.getLongExtra("time", 0L); //.... }
奇怪的是“reminderToFire”仅在 Android N 设备上为空,但 timeToFire 是正确的。
我在想它与 Parceler 库有关吗?我正在使用 Java 1.8 编译并针对 Android API 24。
我肯定在网上寻找答案,但我的情况有点独特,因为代码 100% 适用于所有早期版本的 Android(低于 N 预览的所有内容)......所以我遵循以下答案尽我所能:
其他人有这个问题吗?