安卓如何关闭通知声音

4
我想要创建一个无声通知,该怎么做?我尝试了下面的代码,但它对我不起作用:
notification = mBuilder
        .setStyle(notiStyle)
        .setSmallIcon(notificationIcon)
        .setTicker(title)
        .setWhen(0)
        .setAutoCancel(true)
        .setContentTitle(title)
        .setContentIntent(resultPendingIntent)
        .setSound(null).build();

Android通知声音禁用。 - Gueorgui Obregon
当针对API 26(Android O)时,通知渠道中存在错误。请参考以下链接了解有关如何禁用NotificationChannel声音的内容:https://dev59.com/zVcO5IYBdhLWcg3wXgfh - Daniel F
3个回答

5
您可以创建NotificationCompat.Builder对象而不使用setSound()。这将创建一个没有任何声音的通知。
notification = mBuilder
                .setStyle(notiStyle)
                .setSmallIcon(notificationIcon)
                .setTicker(title)
                .setWhen(0)
                .setAutoCancel(true)
                .setContentTitle(title)
                .setContentIntent(resultPendingIntent)
                .build();

4
在你的通知构建器之后,添加如下内容:
notification.defaults = 0;

告诉通知管理器,当没有指定默认值时不要设置任何默认值(例如,你将其设置为null,则会使用默认值,添加此内容将取消此行为并完全禁用声音)。

1
在Android O中,它被移除了。 - Saef Myth
3
当您将通知通道的重要性设置为低时,声音来自该通道。但是,当您第一次创建通道时,无法再次创建它,它会留在设备中。您需要通过API删除更改或创建新的通道名称。 - Saef Myth
2
好的。因此,在创建它们时小心处理这些事情是个好主意(关闭所有声音和振动?)另外,setAlertOnlyOnce() 适用于更新通知的情况,在某些地方可能会有所帮助。由于您无法更新实际的通知对象。 - Sakiboy

1
在Android 26+(Oreo)中,您可以通过将通知渠道重要性级别设置为“IMPORTANCE_LOW”或更低来实现此目的。
val importance = NotificationManager.IMPORTANCE_LOW
val channel = NotificationChannel(CHANNEL_ID, name, importance).apply {
    description = descriptionText
}

重要性低会导致气泡不显示。 - famfamfam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接