Уведомления oreo api 26 - работали отлично, теперь их нет - PullRequest
0 голосов
/ 24 августа 2018

У меня были уведомления, работающие отлично после реализации каналов и т. Д., Но потом они внезапно перестали работать. Мне интересно, почему, это могут быть зависимости, или что-то еще не так с моим кодом?

Код уведомления:

 public void initiateNotification(){

    NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
    builder = new Notification.Builder(this);


    Intent notiIntent = new Intent(this, MainPage.class);
    notiIntent.putExtra("fileName", storage.getFileName(Calendar.getInstance()));
    notiIntent.setAction("NOTI");
    notiIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

    PendingIntent pi = PendingIntent.getActivity(this, 0, notiIntent, 0);

    Intent stopIntent = new Intent(this, Services.class);
    stopIntent.setAction("STOP");
    PendingIntent stopPi = PendingIntent.getService(this, 0, stopIntent, 0);
    Notification.Action stopAction = new Notification.Action.Builder(null, "STOP", stopPi).build();



    //test
    int notifyID = 1;
    String CHANNEL_ID = "my_channel_01";// The id of the channel.
    CharSequence name = getString(R.string.channel_name);// The user-visible name of the channel.
    int importance = NotificationManager.IMPORTANCE_HIGH;
   NotificationChannel mChannel = new NotificationChannel(CHANNEL_ID, name, importance);

    Notification noti = new Notification.Builder(Services.this)
            .setContentTitle("Well Done! Stay Active!")
            .setContentText("Number of Steps : " + mSteps)
            .setSmallIcon(R.drawable.bino_small)
            .setContentIntent(pi)
            .setChannelId(CHANNEL_ID)
            .build();


    startForeground(1, noti);
}

Версии SDK:

  • compileSdkVersion: 27
  • buildToolsVersion: 27.0.3
  • minSdkВерсия: 26
  • targetSdkVersion: 26

Я посмотрел на многие решения и перепробовал их все, но, похоже, ничего не помогло. Заранее спасибо.

1 Ответ

0 голосов
/ 24 августа 2018

Вам также необходимо создать канал уведомлений, если он не существует.(Это всегда относится к первому запуску.)

Это можно сделать с помощью

    NotificationManager notificationManager = getSystemService(NotificationManager.class);
    notificationManager.createNotificationChannel(channel);

Также обратите внимание, что вы не можете больше менять значение после создания канала.

Обновление

Добавление создания канала выполняется после инициализации канала.Итак, эта строка в вашем коде:

NotificationChannel mChannel = new NotificationChannel(CHANNEL_ID, name, importance);

станет

NotificationChannel mChannel = new NotificationChannel(CHANNEL_ID, name, importance);
NotificationManager notificationManager = getSystemService(NotificationManager.class);
notificationManager.createNotificationChannel(mChannel);
...