這是問題所在。我的程序在Android 6.0中運行完美。將設備更新至android 7.0後。 Pendingintent無法將可分發的數據傳遞給boradcast reveiver。這是代碼。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類,而待辦事項是我需要通知的實例。
在BroadcastReceiver中,我無法獲取可壓縮數據。
public void onReceive(Context context, Intent intent) {
Todo todo = intent.getParcelableExtra("KEY_TODO");
}
這裏是意圖的結果,當我調試 enter image description here
我不知道爲什麼意圖僅包含一個整數,我從來沒有把它放在哪裏是Parcelable待辦事項。 此代碼在安卓6.0沒有問題,但不能在7.0
您是否嘗試過將它添加到「額外」之前包裹你的'Todo'對象的'Bundle'?這通常適用於傳遞自定義'Parcelable'對象到'AlarmManager'(但現在可能在Android 7中被破壞)。我會對你的發現感興趣。 –
要添加額外的:'Bundle bundle = new Bundle; bundle.putParcelable(「todo」,todo); intent.putExtra(「KEY_TODO」,bundle);'。提取額外的:Bundle bundle = intent.getBundleExtra(「KEY_TODO」); if(bundle!= null){Todo todo = bundle.getParcelableExtra(「todo」); }' –