Android Oreo notification keep making Sound even if I do not set sound. On Older version, works perfectly

后端 未结 4 506
天涯浪人
天涯浪人 2020-12-15 04:41

So I am making my app compatible with Oreo and facing issue with notification.

I added notification channel according to documentation and everything is working smoo

相关标签:
4条回答
  • 2020-12-15 05:04

    My scene is the first time there is a sound, and the update notification does not require a sound.

    I use this setOnlyAlertOnce() method

    Reference: https://developer.android.com/training/notify-user/build-notification#Updating

    Test pass version 26

    0 讨论(0)
  • 2020-12-15 05:17

    ^Benjamin answer works but he is missing some important detail! You must change your channel ID each time you adjust your code or Oreo will not make the changes. Not sure why.

    My code below and you can see where the chnage must be made with this <-------here

     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    
            String channelID = "My Channel I";  <-------here
            String appName = mContext.getResources().getString(R.string.app_name);
    
    
            NotificationCompat.Builder notificationCompatBuilder = new NotificationCompat.Builder(mContext );
            notificationCompatBuilder
                    .setOngoing(true)
                    .setContentTitle(mContext.getResources().getString(R.string.app_name))
                    .setContentText(mContext.getString(R.string.clocked_in))
                    .setSmallIcon(R.drawable.ic_action_name)
                    .setChannelId(channelID)
                    .setSound(null);
    
            NotificationManager notificationManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
    
            NotificationChannel notificationChannel = new NotificationChannel(channelID, appName, NotificationManager.IMPORTANCE_LOW);
            notificationChannel.setSound(null, null);
            notificationManager.createNotificationChannel(notificationChannel);
            notificationManager.notify(ONGOINGNOTIFICATION_ID, notificationCompatBuilder.build());
    
        }
    
    0 讨论(0)
  • 2020-12-15 05:20

    Take a look at the notification channel settings (swipe your notification and press the settings icon under it and then select your channel). Those settings are set the first time you create the channel and then not modified unless you do it manually in the device (at least that is my experience from uninstalling and reinstalling my app to see what settings I get by default).

    Basically, channel.setSound(null, null) will only have effect when you create the channel on a fresh installation. That might be what they try to explain in the official guide:

    Attempting to create an existing notification channel with its original values performs no operation

    If you tried to follow that guide and set NotificationManager.IMPORTANCE_HIGH and didn't use channel.setSound(null, null), the channel would get importance level Urgent Make sound and pop on screen with the default sound.

    0 讨论(0)
  • 2020-12-15 05:28

    Replace your code with this

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                    /* Create or update. */
            NotificationChannel channel = new NotificationChannel("channel_01",
                    "Playback Notification",
                    NotificationManager.IMPORTANCE_LOW);
            channel.setSound(null, null);
            mNotificationManager.createNotificationChannel(channel);
            mBuilder.setChannelId("channel_01");
        }
    
    0 讨论(0)
提交回复
热议问题