У меня есть приложение для создания рутинных задач с push-уведомлениями.Когда я добавляю несколько задач (каждая имеет уникальный идентификатор), и появляется push-уведомление, в котором содержатся данные последней задачи.Я проверил с помощью LogCat и убедился, что в TaskActivity каждая задача имеет уникальный идентификатор, но в AlarmService отображается только последняя введенная задача.
Я ищу много итакже, но я не мог найти подсказки о том, что пошло не так.
Я также изменил PendingIntent.FLAG_UPDATE_CURRENT
на FLAG_CANCEL_CURRENT
и FLAG_ONE_SHOT
, но это не сработало.
Я думал одобавив intent
для каждой задачи, но я не смог найти способ сделать это.
TaskActivity
.
.
.
public void setNotificationForNewTaskInside() {
alarmManager = (AlarmManager) getApplicationContext().getSystemService(
ALARM_SERVICE);
Intent alarmIntent = new Intent(this,AlarmReceiver.class);
Random random = new Random();
randomNum= random.nextInt(9999 - 1000) + 1000;
pendingIntent = PendingIntent.getBroadcast(getApplicationContext(),
randomNum, alarmIntent, PendingIntent.FLAG_UPDATE_CURRENT);
if (DeviceTimeAndDate.devicetaskTimeDate.equals(newtaskTimeDate)) {
finalLong=System.currentTimeMillis();
alarmManager.setExact(AlarmManager.RTC_WAKEUP, finalLong, pendingIntent);
}
else if (DeviceTimeAndDate.devicetaskTimeDate.before(newtaskTimeDate)) {
finalLong=new_task_timeInMilliseconds;
alarmManager.setExact(AlarmManager.RTC_WAKEUP, finalLong, pendingIntent);
} else if (DeviceTimeAndDate.devicetaskTimeDate.after(newtaskTimeDate)) {
Toast.makeText(context, "زمان یا تاریخ مورد گذشنه است، لطفا زمان دیگری را انتخاب کنید", Toast.LENGTH_SHORT).show();
startDate.setText(DeviceTimeAndDate.deviceTime);
taskTime.setText(EditTaskActivity.secondMiConver);
}
AlarmReciver
public class AlarmReceiver extends BroadcastReceiver {
String TAG = "AlarmReceiver";
public RemoteViews remoteViews;
public Uri sound;
public Context context;
public Notification notification;
int finalRandumNum;
public static String getTitle,getTime;
public AlarmReceiver (){
}
@Override
public void onReceive(Context context, Intent intent) {
sound = Uri.parse("android.resource://" + context.getPackageName() + "/raw/plucky");
remoteViews= new RemoteViews(context.getPackageName(), R.layout.notification);
remoteViews.setImageViewResource(R.id.notif_image, R.mipmap.ic_launcher);
remoteViews.setTextViewText(R.id.title,getTitle);
remoteViews.setTextViewText(R.id.text,getTime);
NotificationManager notif=(NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
android.app.Notification notify=new NotificationCompat.Builder(context, "CHANNEL_ID")
.setContentTitle(TaskActivity.subjEntry)
.setWhen(finalLong)
.setSound(sound)
.setContentText(TaskActivity.timeEntryy)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentIntent(TaskActivity.pendingIntent)
.build();
notif.notify(TaskActivity.randomNum, notify);