NotificationCompat с API 26

Я не вижу никакой информации о том, как использовать NotificationCompat с Notification Channels уведомлений Android O

Я вижу новый конструктор, который принимает channelId но как принять уведомление о совместимости и использовать его в NotificationChannel, поскольку createNotificationChannel принимает объект NotificationChannel

Создайте NotificationChannel только если API> = 26

 public void initChannels(Context context) { if (Build.VERSION.SDK_INT < 26) { return; } NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); NotificationChannel channel = new NotificationChannel("default", "Channel name", NotificationManager.IMPORTANCE_DEFAULT); channel.setDescription("Channel description"); notificationManager.createNotificationChannel(channel); } 

И тогда просто используйте:

 NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(context, "default"); 

Таким образом, ваши уведомления работают как с API 26 (с каналом), так и ниже (без).

Объявить диспетчер уведомлений:

  final NotificationManager mNotific= (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE); CharSequence name="Ragav"; String desc="this is notific"; int imp=NotificationManager.IMPORTANCE_HIGH; final String ChannelID="my_channel_01"; 

Канал уведомлений

  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { NotificationChannel mChannel = new NotificationChannel(ChannelID, name, imp); mChannel.setDescription(desc); mChannel.setLightColor(Color.CYAN); mChannel.canShowBadge(); mChannel.setShowBadge(true); mNotific.createNotificationChannel(mChannel); } final int ncode=101; String Body="This is testing notific"; по  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { NotificationChannel mChannel = new NotificationChannel(ChannelID, name, imp); mChannel.setDescription(desc); mChannel.setLightColor(Color.CYAN); mChannel.canShowBadge(); mChannel.setShowBadge(true); mNotific.createNotificationChannel(mChannel); } final int ncode=101; String Body="This is testing notific"; 

Конструктор уведомлений

  Notification n= new Notification.Builder(this,ChannelID) .setContentTitle(getPackageName()) .setContentText(Body) .setBadgeIconType(R.mipmap.ic_launcher) .setNumber(5) .setSmallIcon(R.mipmap.ic_launcher_round) .setAutoCancel(true) .build(); 

NotificationManager уведомляет пользователя:

  mNotific.notify(ncode, n); 

NotificationChannel фактически группирует несколько уведомлений в каналы. Это в основном дает больший контроль над поведением уведомления пользователю. Вы можете больше узнать о канале Notification Channel и его реализации при работе с Notification Channel | С примером

Канал уведомлений применим только для Android Oreo.

  //Notification channel should only be created for devices running Android 26 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { NotificationChannel notificationChannel = new NotificationChannel("unique_channel_id","channel_name",NotificationManager.IMPORTANCE_DEFAULT); //Boolean value to set if lights are enabled for Notifications from this Channel notificationChannel.enableLights(true); //Boolean value to set if vibration is enabled for Notifications from this Channel notificationChannel.enableVibration(true); //Sets the color of Notification Light notificationChannel.setLightColor(Color.GREEN); //Set the vibration pattern for notifications. Pattern is in milliseconds with the format {delay,play,sleep,play,sleep...} notificationChannel.setVibrationPattern(new long[]{500,500,500,500,500}); //Sets whether notifications from these Channel should be visible on Lockscreen or not notificationChannel.setLockscreenVisibility( Notification.VISIBILITY_PUBLIC); } 

Обратите внимание, что идентификатор канала, переданный конструктору, действует как уникальный идентификатор для этого канала уведомлений. Теперь создайте уведомление, как показано ниже.

 // Creating the Channel NotificationManager notificationManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE); notificationManager.createNotificationChannel(notificationChannel); 

Чтобы добавить любое уведомление на этот канал, просто передайте идентификатор канала, как показано ниже

 //We pass the unique channel id as the second parameter in the constructor NotificationCompat.Builder notificationCompatBuilder=new NotificationCompat.Builder(this,NOTIFICATION_CHANNEL_ID); //Title for your notification notificationCompatBuilder.setContentTitle("This is title"); //Subtext for your notification notificationCompatBuilder.setContentText("This is subtext"); //Small Icon for your notificatiom notificationCompatBuilder.setSmallIcon(R.id.icon); //Large Icon for your notification notificationCompatBuilder.setLargeIcon( BitmapFactory.decodeResource(getResources(),R.id.icon)); notificationManager.notify( NOTIFICATION_ID,notificationCompatBuilder.build()); 

Будьте осторожны, если вы выполнили всю работу, и вы не получили никаких результатов. На некоторых устройствах вы должны установить приоритет уведомлений.

  final NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(mContext, "default") .setPriority(Notification.PRIORITY_MAX); 
  • Android: Как создать уведомление «Ongoing»?
  • Как нарисовать представление поверх всего?
  • Проверить доступ к уведомлениям с помощью NotificationListenerService
  • Проверьте, включены ли локальные уведомления в IOS 8
  • Извлечение текста извещных, contentView или contentIntent
  • Как реализовать устаревшие методы уведомления
  • android: запуск фоновой задачи с помощью AlarmManager
  • Отмена уведомления об удалении приложения из многозадачной панели
  • Android - создайте уведомление, TaskStackBuilder.addParentStack не работает
  • Уведомление о восстановлении задачи, а не конкретной деятельности?
  • Обновить текст уведомления, а не целое уведомление
  • Давайте будем гением компьютера.