向活动广播接收者发送额外内容



我的应用程序是关于提醒的。将提醒插入 SQLite 数据库后,它在 AddReminderActivity.java 类中正确显示 ID,但在以下代码中的 AlarmReciver.java 类中返回 ID=1。

这就是我如何把额外的

Intent intent = new Intent(this, AlarmReciever.class);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.putExtra("reminderId", reminderId);
PendingIntent pendingIntent = 
PendingIntent.getBroadcast(this.getApplicationContext(), 5, intent, 0);
AlarmManager mAlarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
assert mAlarmManager != null;
mAlarmManager.set(AlarmManager.RTC_WAKEUP, milliSecondsFromDate, pendingIntent);
Toast.makeText(this, "Alarm set at " + selectedDate + " " + timeInHrs, Toast.LENGTH_LONG).show();
finish();

这就是我获得额外内容的方式

@Override
public void onReceive(Context context, Intent intent) {
Long reminderId = intent.getLongExtra("reminderId", -1);
mDatabaseHelper = new DatabaseHelper(context);
Reminder reminder = mDatabaseHelper.getReminder(reminderId);
Intent serviceIntent = new Intent(context, TTSService.class);
if (reminder != null && !reminder.getText().isEmpty()) {
serviceIntent.putExtra("reminderText", reminder.getText());
}
context.startService(serviceIntent);
Toast.makeText(context, "AlarmReciever..", Toast.LENGTH_LONG).show();
}

使用它来获取额外的

@Override
public void onReceive(Context context, Intent intent) {
Long reminderId = intent.getExtras().getLong("reminderId", -1);
mDatabaseHelper = new DatabaseHelper(context);
Reminder reminder = mDatabaseHelper.getReminder(reminderId);
Intent serviceIntent = new Intent(context, TTSService.class);
if (reminder != null && !reminder.getText().isEmpty()) {
serviceIntent.putExtra("reminderText", reminder.getText());
}
context.startService(serviceIntent);
Toast.makeText(context, "AlarmReciever..", Toast.LENGTH_LONG).show();
}

为了正确设置"extras",您需要在调用中使用PendingIntent.FLAG_UPDATE_CURRENTgetBroadcast(),如下所示:

PendingIntent pendingIntent = 
PendingIntent.getBroadcast(this.getApplicationContext(), 5, intent,
PendingIntent.FLAG_UPDATE_CURRENT);

另外,您确定reminderId在调用putExtra()的代码中属于longLong类型吗?

最新更新