setDefaults не рекомендуется в Notification.Builder - PullRequest
0 голосов
/ 25 июня 2018

setDefaults в Notification.Builder устарела в Android O и выше (SDK> = 26)

Также setSound

Это мой код

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        b.setAutoCancel(true)
                .setSmallIcon(R.drawable.ic_luncher_new)
                .setContentTitle(Title)
                .setTicker(Title)
                .setContentText(Msg)
                .setChannelId("cid")
                .setDefaults(Notification.DEFAULT_ALL)
                .setStyle(new Notification.BigTextStyle().bigText(Msg))
                .setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION))
                .setContentIntent(contentIntent);
    }
NotificationManager notificationManager = (NotificationManager) ctx.getSystemService(Context.NOTIFICATION_SERVICE);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        notificationManager.createNotificationChannel(mChannel);
    }
    notificationManager.notify(id, b.build());`

Что мне заменить?я не нахожу никакого полезного примера

Ответы [ 4 ]

0 голосов
/ 04 декабря 2018

Я использую эту функцию сейчас и отлично работает

private void CreateNotificationMessage(Context ctx,String Title,String Msg){
    int id=15;
    Intent intent= new Intent(ctx, MainActivity.class);
    PendingIntent contentIntent = PendingIntent.getActivity(ctx, 0, intent, 0);
    Notification.Builder b = new Notification.Builder(ctx);

    NotificationChannel mChannel = null;
    b.setAutoCancel(true)
            .setSmallIcon(R.drawable.ic_luncher)
            .setContentTitle(Title)
            .setTicker(Title)
            .setContentText(Msg)
            .setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION))
            .setContentIntent(contentIntent);



    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        mChannel = new NotificationChannel("cid", "name",NotificationManager.IMPORTANCE_HIGH);
        b.setChannelId("cid");
        mChannel.setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION), new AudioAttributes.Builder()
                .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
                .setUsage(AudioAttributes.USAGE_NOTIFICATION_RINGTONE)
                .build());
    }

    NotificationManager notificationManager = (NotificationManager) ctx.getSystemService(Context.NOTIFICATION_SERVICE);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        notificationManager.createNotificationChannel(mChannel);
    }
    notificationManager.notify(id, b.build());

}
0 голосов
/ 25 июня 2018

Начиная с Android O (уровень API 26), все уведомления должны быть назначены каналу.Эти конфигурации могут быть установлены на канале уведомлений с использованием следующих специальных методов:

  1. NotificationChannel.enableVibration (логическое значение)
  2. NotificationChannel.enableLights (логическое значение)
  3. NotificationChannel.setSound (Uri, AudioAttributes)
0 голосов
/ 25 июня 2018

setDefaults следует заменить с использованием следующего

  • NotificationChannel.enableVibration (булево)
  • NotificationChannel.enableLights (булевы)
  • NotificationChannel.setSound (Uri, AudioAttributes)

источник

setSound следует заменить с использованием

  • NotificationChannel.setSound (Uri, AudioAttributes)

источник

0 голосов
/ 25 июня 2018

Из документов :

public Notification.Builder setDefaults (int defaults)

Этот метод устарел на уровне API 26. использовать NotificationChannel.enableVibration(логическое значение) и NotificationChannel.enableLights (логическое значение) и NotificationChannel.setSound (Uri, AudioAttributes).

public Notification.Builder setSound (звук Uri, AudioAttributes audioAttributes)

Этот метод устарел вУровень API 26. Вместо этого используйте NotificationChannel.setSound (Uri, AudioAttributes).

Вам нужно изменить сигнатуру вашего метода.

...