简体   繁体   English

Android:通知声音禁用

[英]Android : Notification sound disable

I have a notification with this code:我有一个带有此代码的通知:

Notification notifica = new Notification();
notifica.flags |= Notification.FLAG_AUTO_CANCEL;
notifica.icon = R.drawable.serie_notification;
notifica.when = System.currentTimeMillis();

with notifica.defaults = notifica.defaults|Notification.DEFAULT_SOUND;使用notifica.defaults = notifica.defaults|Notification.DEFAULT_SOUND; I enable the default sound but if I want to disable the sound how can I do??我启用了默认声音,但如果我想禁用声音我该怎么办?

Well, it worked for me by doing this:好吧,它通过这样做对我有用:

myNotification.defaults = 0;

Try it out =)试试看 =)

To show notifications without sound on pre Oreo devices, Oreo and above devices在 Oreo 之前的设备、Oreo 及更高版本的设备上显示无声通知



    NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);

    Intent intent = new Intent(this, AlertDetails.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); 
    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0);

    String CHANNEL_ID = "channel_id";

    // You must create the channel to show the notification on Android 8.0 and higher versions
    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        // Set importance to IMPORTANCE_LOW to mute notification sound on Android 8.0 and above
        NotificationChannel channel = new NotificationChannel(CHANNEL_ID, "name", NotificationManager.IMPORTANCE_LOW);
        notificationManager.createNotificationChannel(channel);
    }

    NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this, CHANNEL_ID)
            .setSmallIcon(R.drawable.notification_icon)
            .setContentTitle("My notification")
            .setContentText("Hello World!")
            // You must set the priority to support Android 7.1 and lower
            .setPriority(NotificationCompat.PRIORITY_LOW) // Set priority to PRIORITY_LOW to mute notification sound 
            .setContentIntent(pendingIntent)
            .setAutoCancel(true); 

    notificationManager.notify(
                    1001, // notification id
                    mBuilder.build());

It is possible to do that basically just enable all of the other Notification.defaults except the sound ( which is Notification.DEFAULT_SOUND ).可以这样做基本上只启用除声音(即Notification.DEFAULT_SOUND )之外的所有其他Notification.defaults

Here is an example that will work for you:这是一个适合您的示例:

myNotification.defaults = 0;
myNotification.defaults |= Notification.DEFAULT_VIBRATE;

Here are all of the available the options you can select:以下是您可以选择的所有可用选项:

Notification.DEFAULT_LIGHTS
Notification.DEFAULT_VIBRATE
Notification.DEFAULT_SOUND
Notification.DEFAULT_ALL // This enables all above 3

Update更新

Notification .defaults deprecated通知.defaults已弃用

android "O" >= , Disable or Enable sound of the notification you use two ids for notification channel. android "O" >= ,禁用或启用通知的声音您使用两个 id 作为通知通道。 one for sounded notification and another is set when you want to disable一个用于声音通知,另一个用于当您要禁用时

@RequiresApi(api = Build.VERSION_CODES.O)
    private void createNotificationChannel(Context context, NotificationManager mNotificationManager, boolean playSound) {

// The user-visible name of the channel. CharSequence name = context.getString(R.string.channel_name); // The user-visible description of the channel. String description = context.getString(R.string.channel_description); int importance = NotificationManager.IMPORTANCE_HIGH; NotificationChannel mChannel = new NotificationChannel(playSound ? channel_id_sound : channel_id_no_sound, name, importance); // Configure the notification channel. mChannel.setDescription(description); mChannel.enableLights(true); // Sets the notification light color for notifications posted to this // channel, if the device supports this feature. mChannel.setLightColor(Color.RED); mChannel.enableVibration(true); mChannel.setVibrationPattern(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400}); if (!playSound) mChannel.setSound(null, null); mNotificationManager.createNotificationChannel(mChannel); }

在较新版本的 Android 中,您必须将通知通道的优先级设置为低:

var channel = new NotificationChannel(notificationChannelName, "channel", NotificationManager.IMPORTANCE_LOW);

You can disable the sound using this您可以使用此禁用声音

NotificationChannel channel = new NotificationChannel(CHANNEL_ID, "Channel name", NotificationManager.IMPORTANCE_LOW);
channel.setSound(null, null);

Just set the sound of channel as null只需将频道的声音设置为 null

NotificationCompat.Builder method NotificationCompat.Builder 方法

setSilent(true)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM