studio notificationcompat notificationchannel notification notificaciones channelid agrupar android push-notification

android - notificationchannel - notificationcompat.builder channelid



Sonido de notificación en API 26 (5)

Además de la respuesta de Faxriddin, puede determinar cuándo debe apagar el sonido de notificación al verificar la importance of the notification channel y are enabled notifications parámetros de are enabled notifications .

NotificationChannel channel = notificationManager.getNotificationChannel(NOTIFICATION_CHANNEL_ID); if(notificationManager.areNotificationsEnabled() && channel.getImportance() != NotificationManager.IMPORTANCE_NONE) { try { Ringtone r = RingtoneManager.getRingtone(ctx, soundUri); r.play(); } catch (Exception e) { } }

Tengo un sonido mp3 personalizado que utilizo en mis notificaciones. Funciona bien en todos los dispositivos por debajo de la API 26. Intenté configurar el sonido en Notification Channel también, pero aún no funciona. Reproduce el sonido por defecto.

NotificationCompat.Builder builder = new NotificationCompat.Builder(this, channelId) .setAutoCancel(true) .setSmallIcon(R.drawable.icon_push) .setColor(ContextCompat.getColor(this, R.color.green)) .setContentTitle(title) .setSound(Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.notification)) .setDefaults(Notification.DEFAULT_VIBRATE) .setStyle(new NotificationCompat.BigTextStyle().bigText(message)) .setContentText(message); Notification notification = builder.build(); NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE); if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) { NotificationChannel channel = new NotificationChannel(channelId, channelName, NotificationManager.IMPORTANCE_DEFAULT); AudioAttributes audioAttributes = new AudioAttributes.Builder() .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION) .setUsage(AudioAttributes.USAGE_NOTIFICATION_RINGTONE) .build(); channel.setSound(Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.notification), audioAttributes); notificationManager.createNotificationChannel(channel); } notificationManager.notify(1, notification);


El sonido predeterminado anula cualquier sonido.

Necesitas poner esto en tu código:

notification.defaults = Notification.DEFAULT_LIGHTS | Notification.DEFAULT_VIBRATE;

Referencia:

Notificaciones de Android



Es posible que haya creado el canal originalmente con el sonido predeterminado. Una vez que se crea el canal, no se puede cambiar. Debe volver a instalar la aplicación o crear un canal con una nueva ID de canal.


Usé RingtoneManager, y es un trabajo para mí. Prueba el código thius:

NotificationCompat.Builder builder = new NotificationCompat.Builder(MainActivity.this); builder.setSmallIcon(android.R.drawable.ic_dialog_alert); Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com/")); PendingIntent pendingIntent = PendingIntent.getActivity(MainActivity.this, 0, intent, 0); builder.setContentIntent(pendingIntent); builder.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher)); builder.setContentTitle("Notification title"); builder.setContentText("Notification message."); builder.setSubText("Url link."); try { Uri notification = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.custom_ringtone); Ringtone r = RingtoneManager.getRingtone(getApplicationContext(), notification); r.play(); } catch (Exception e) { e.printStackTrace(); } NotificationManager notificationManager = (NotificationManager) this.getSystemService(NOTIFICATION_SERVICE); notificationManager.notify(1, builder.build());