我有一个包含笔记的RecyclerView,当我添加新笔记时,我想为该特定笔记添加提醒,但当出现通知并单击它时,我想导航到该活动并打开该笔记。通知工作正常,但我想要的是,当我单击通知打开该笔记时,我在其上设置提醒。
报警接收器类:
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Intent i = new Intent(context, ChecklistChildActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, i, 0);
NotificationCompat.Builder builder = new NotificationCompat.Builder(context, "alarmChannel")
.setContentTitle("title")
.setContentText("text")
.setAutoCancel(true)
.setDefaults(NotificationCompat.DEFAULT_ALL)
.setSmallIcon(R.drawable.alarm)
.setPriority(NotificationCompat.PRIORITY_HIGH)
.setContentIntent(pendingIntent);
NotificationManagerCompat managerCompat = NotificationManagerCompat.from(context);
managerCompat.notify(123, builder.build());
}
}
setAlarm方法:
private void setAlarm() {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR, hour);
calendar.set(Calendar.MINUTE, minute);
alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(this, AlarmReceiver.class);
pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0);
alarmManager.setExact(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
Toast.makeText(this, "Alarm is set", Toast.LENGTH_SHORT).show();
}
我在RecyclerAdapter中有一个时钟接口,它是在MainActivity中实现的:
@Override public void onNoteClicked(整数位置,查看项视图){
Intent intent = new Intent(this, NoteDetail.class).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("id", noteAdapter.itemList.get(position).getId());
intent.putExtra("title", noteAdapter.itemList.get(position).getTitle());
intent.putExtra("content", noteAdapter.itemList.get(position).getContent());
intent.putExtra("date", noteAdapter.itemList.get(position).getDate());
intent.putExtra("backgroundColor", noteAdapter.itemList.get(position).getBackgroundColor());
startActivity(intent);
}
当我点击通知的时候,这个方法应该被调用。当我添加一个注解的时候,我不知道它会去哪个位置,以便传递意图,虽然如果我知道位置,当我添加或删除另一个注解的时候,位置可能会改变。
1条答案
按热度按时间vyswwuz21#
太好了,我有个主意,我假设您的Activity从Intent获取ID和其他数据。因此,我们必须将数据放入警报Intent,然后从AlarmReceiver读取它们,并将它们再次放入Activity Intent。
并从Receiver类中获取:
这是一种简单的方法,但我建议在Activity中使用数据库,并在onCreate方法中使用id获取注解详细信息,因此您只需在Intent中添加id,并在www.example.com类中添加get queryNoteDetail.java。