Android Notification SetSound Is Not Working


Answer :

below code will help you:

 String CHANNEL_ID="1234";      Uri soundUri = Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://"+ getApplicationContext().getPackageName() + "/" + R.raw.mysound);     NotificationManager mNotificationManager = (NotificationManager) getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE);     //For API 26+ you need to put some additional code like below:     NotificationChannel mChannel;         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {                 mChannel = new NotificationChannel(CHANNEL_ID, Utils.CHANNEL_NAME, NotificationManager.IMPORTANCE_HIGH);                 mChannel.setLightColor(Color.GRAY);                 mChannel.enableLights(true);                 mChannel.setDescription(Utils.CHANNEL_SIREN_DESCRIPTION);                 AudioAttributes audioAttributes = new AudioAttributes.Builder()                         .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)                         .setUsage(AudioAttributes.USAGE_NOTIFICATION)                         .build();                 mChannel.setSound(soundUri, audioAttributes);                  if (mNotificationManager != null) {                     mNotificationManager.createNotificationChannel( mChannel );                 }         }     //General code:      NotificationCompat.Builder status = new NotificationCompat.Builder(getApplicationContext(),CHANNEL_ID);                                status.setAutoCancel(true)                                 .setWhen(System.currentTimeMillis())                                 .setSmallIcon(R.drawable.logo)                                 //.setOnlyAlertOnce(true)                                 .setContentTitle(getString(R.string.app_name))                                 .setContentText(messageBody)                                 .setVibrate(new long[]{0, 500, 1000})                                 .setDefaults(Notification.DEFAULT_LIGHTS )                                 .setSound(Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE+ "://" +mContext.getPackageName()+"/"+R.raw.apple_ring))                                 .setContentIntent(pendingIntent)                                 .setContent(views);                          mNotificationManager.notify(major_id, status.build()); 

where mysound is my ringtone which is put under res/raw folder.

Note: you have to only put name of ringtone without extension like raw/mysound


  1. Try clearing data (or fresh install)
  2. Trying this again

The settings are set the first time you create the channel and then not modified unless you do it manually by fresh install or clearing data.

For more info on this read the top answer here: Android Oreo notification keep making Sound even if I do not set sound. On Older version, works perfectly


For API 26+ you need to set the sound on the notification channel:

Uri soundUri = Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://"+ getApplicationContext().getPackageName() + "/" + R.raw.siren); NotificationManager mNotificationManager = (NotificationManager) getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE);     NotificationChannel mChannel;     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {             mChannel = new NotificationChannel(Utils.CHANNEL_SIREN_ID, Utils.CHANNEL_SIREN_NAME, NotificationManager.IMPORTANCE_HIGH);             mChannel.setLightColor(Color.GRAY);             mChannel.enableLights(true);             mChannel.setDescription(Utils.CHANNEL_SIREN_DESCRIPTION);             AudioAttributes audioAttributes = new AudioAttributes.Builder()                     .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)                     .setUsage(AudioAttributes.USAGE_NOTIFICATION)                     .build();             mChannel.setSound(soundUri, audioAttributes);              if (mNotificationManager != null) {                 mNotificationManager.createNotificationChannel( mChannel );             }     }      NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this, Utils.CHANNEL_SIREN_ID)             .setSmallIcon(R.drawable.ic_stat_maps_local_library)             .setLargeIcon(BitmapFactory.decodeResource(getApplicationContext().getResources(), R.mipmap.ic_launcher))             .setTicker(title)             .setContentTitle(contentTitle)             .setContentText(contentText)             .setAutoCancel(true)             .setLights(0xff0000ff, 300, 1000) // blue color             .setWhen(System.currentTimeMillis())             .setPriority(NotificationCompat.PRIORITY_DEFAULT);      if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {             mBuilder.setSound(soundUri);     }      int NOTIFICATION_ID = 1; // Causes to update the same notification over and over again.     if (mNotificationManager != null) {         mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build());     } 

Comments

Popular posts from this blog

Converting A String To Int In Groovy

"Cannot Create Cache Directory /home//.composer/cache/repo/https---packagist.org/, Or Directory Is Not Writable. Proceeding Without Cache"

Android How Can I Convert A String To A Editable