почему мои уведомления не появляются в указанное время - PullRequest
0 голосов
/ 02 октября 2019

я хочу показать уведомление с помощью диспетчера тревог, но уведомление не появляется в указанное время, уведомление вместо этого появляется при сохранении данных

здесь мой код метода запланированного уведомления

private void scheduleNotification(Notification notification, Calendar calendar) {


        Intent notifIntent = new Intent(this, NotificationPublish.class);
        notifIntent.putExtra(NotificationPublish.NOTIFICATION_ID, 0);
        notifIntent.putExtra(NotificationPublish.NOTIFICATION, notification);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(AddTaskActivity.this, 0, notifIntent, PendingIntent.FLAG_CANCEL_CURRENT);

//        long futureInMilis = SystemClock.elapsedRealtime() + time;
        AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
        alarmManager.setAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
    }

и это метод getNotification

private Notification getNotification(String task) {
        NotificationCompat.Builder builder =  new NotificationCompat.Builder(this);
        builder.setContentTitle(task);
        builder.setContentText("Go Start");
        builder.setSmallIcon(R.drawable.ic_launcher_background);
        return builder.build();
    }

Вот набор календаря

 public void onDateSelected(Date date) {
                        String date3 = sdf.format(date);
//                        time = date.getTime();
                        calendar = Calendar.getInstance();
                        calendar.set(Calendar.YEAR, date.getYear());
                        calendar.set(Calendar.MONTH, date.getMonth());
                        calendar.set(Calendar.DAY_OF_MONTH, date.getDay());
                        calendar.set(Calendar.HOUR_OF_DAY, date.getHours());
                        calendar.set(Calendar.MINUTE, date.getMinutes());
                        edt_datepicker.setText(date3);
                    }
                }).display();

и этот onClick для сохранения данных

public void onClick(View view) {
        if (view == btn_add_task){
            addTask();
            scheduleNotification(getNotification(task),calendar);
            onBackPressed();
            finish();
        }

, и это класс BroadCastReceiver

public class NotificationPublish extends BroadcastReceiver {

    public static String NOTIFICATION_ID = "notification_id";
    public static String NOTIFICATION = "notification";

    @Override
    public void onReceive(final Context context, Intent intent) {
        Log.d("ONRECEIVE", "CALLED");

        NotificationManager manager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);

        Notification notification = intent.getParcelableExtra(NOTIFICATION);
        int id = intent.getIntExtra(NOTIFICATION_ID, 0);
        manager.notify(id, notification);
    }
}

Импорт календаря - java.util.Calendar

Я искал и пробовал один, он все еще не работает, мне нужна ваша помощь

Спасибо

1 Ответ

0 голосов
/ 02 октября 2019

определить важность уведомления. см. ссылку выше

https://developer.android.com/training/notify-user/build-notification.html#Priority

int importance = NotificationManager.IMPORTANCE_DEFAULT;
        NotificationChannel channel = new NotificationChannel(CHANNEL_ID, name, importance);
...