这是问题所在.我的程序在Android 6.0中运行完美.将设备更新到android 7.0后.Pendingintent无法将可分配的数据传递给boradcast reveiver.这是代码.
发出警报
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);
}
Run Code Online (Sandbox Code Playgroud)
Todo是一个Parcelable类,而todo是我在通知中需要的实例.
在Broadcastreceiver中,我无法获取可用的数据.
public void onReceive(Context context, Intent intent) {
Todo todo = intent.getParcelableExtra("KEY_TODO");
}
Run Code Online (Sandbox Code Playgroud)
我不知道为什么意图只包含一个我从未放入的Integer.Carcelable todo在哪里.此代码在Android 6.0中没有问题,但无法在7.0中运行
android broadcast parcelable android-intent android-pendingintent