リンクされた課題をトラッカーに追加: https://code.google.com/p/android/issues/detail?id=216581&thanks=216581&ts=1468962325
そこで、今日、DP5 Android 7.0 リリースを Nexus 5X にインストールしました。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 デバイスでのみここで null ですが、timeToFire が正しいことです。
Parceler Library と何か関係があると思いますか? Java 1.8 を使用してコンパイルし、Android API 24 をターゲットにしています。
私は間違いなくこれに対する答えを求めてネットを見回しましたが、コードはAndroidの以前のすべてのバージョン(Nプレビュー以下のすべて)で100%動作するため、私のケースは少し独特です...だから私は以下の答えに従っています私ができる限り:
一意のエクストラを保留中のインテントに正しく渡すにはどうすればよいですか?
他の誰かがこの問題を抱えていますか?