В этом проблема. Моя программа отлично работает в Android 6.0. После обновления устройства на Android 7.0. Pendingintent не может передавать предоставленные данные репозитарию boradcast. Вот код.Pendingintent getbroadcast потерял достоверные данные
Пожарная сигнализация
public static void setAlarm(@NonNull Context context, @NonNull Todo todo) {
AlarmManager alarmManager = (AlarmManager) context.getSystemService(context.ALARM_SERVICE);
Intent intent = new Intent(context, AlarmReceiver.class);
intent.putExtra("KEY_TODO", todo);
PendingIntent alarmIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
alarmManager.set(AlarmManager.RTC_WAKEUP, todo.remindDate.getTime(), alarmIntent);
}
Todo является Parcelable класс, а TODO является экземпляр мне нужно в уведомлении.
В Broadcastreceiver, я не могу получить данные по Porcelable.
public void onReceive(Context context, Intent intent) {
Todo todo = intent.getParcelableExtra("KEY_TODO");
}
Вот результат намерения, когда я отладки enter image description here
Я не знаю, почему цель содержит только целое число, что я никогда не положить его. Где Parcelable TODO. Этот код не имеет никаких проблем в Android 6.0, но не может работать в 7,0
Вы пробовали оборачивать свой 'объекта Todo' в' Bundle' перед добавлением его в «дополнительные услуги»? Обычно это работает при передаче пользовательских «Parcelable» объектов в «AlarmManager» (но теперь они могут быть разбиты на Android 7). Меня бы интересовали ваши выводы. –
Чтобы добавить дополнительно: 'Пакет связок = новый пакет; bundle.putParcelable («todo», todo); intent.putExtra ("KEY_TODO", bundle); '. Чтобы извлечь дополнительную информацию: 'Пакет связок = aim.getBundleExtra (« KEY_TODO »); if (bundle! = null) {Todo todo = bundle.getParcelableExtra ("todo"); } ' –