我创建通知频道以在Android 8.0中显示通知,如下所示
NotificationChannel uploadChannel = new NotificationChannel(Constants.NOTIFICATION_CHANNEL_UPLOAD_ID,"Uploads", NotificationManager.IMPORTANCE_LOW);
uploadChannel.enableLights(false);
uploadChannel.setDescription("Uploads Channel");
notificationManager.createNotificationChannel(uploadChannel);
每次我显示通知手机振动很多次。 我从通知渠道禁用振动,如下所示
uploadChannel.enableVibration(false);
我创建通知如下
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context, Constants.NOTIFICATION_CHANNEL_UPLOAD_ID);
但它不起作用电话随着每个通知而振动。
答案 0 :(得分:16)
除了Ahmadul Hoq's answer确实对我有用之外,我还要补充一点,在进行振动更改之前,您可能需要删除该应用程序并重新安装它。该频道会保留其初始设置,如果该应用被终止,它会保持活动状态-因此,如果您仅构建并运行,则更改可能不会应用。
答案 1 :(得分:15)
这是Android 8通知系统的错误。我使用enableVibration
与setVibrationPattern(null)
的不同组合进行了修补,但它不起作用。
只有阻止振动的解决方案是:
mNotificationChannel.setVibrationPattern(new long[]{ 0 });
mNotificationChannel.enableVibration(true);
仅供参考,即使我将振动模式设置为0,但将enableVibration
设置为false
,它也会振动。
答案 2 :(得分:1)
此功能对我有用。借助它,我可以在完全禁用灯光,振动和声音的地方创建通知通道。
private void createNotificationChannel() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel serviceChannel = new NotificationChannel(
CHANNEL_ID,
"Foreground Service Channel",
NotificationManager.IMPORTANCE_DEFAULT
);
serviceChannel.setVibrationPattern(new long[]{ 0 });
serviceChannel.enableVibration(true);
serviceChannel.enableLights(false);
serviceChannel.setSound(null, null);
NotificationManager manager = getSystemService(NotificationManager.class);
manager.createNotificationChannel(serviceChannel);
}
}
答案 3 :(得分:0)
我最初使用NotificationManager.IMPORTANCE_DEFAULT
,但无法停止振动。使用NotificationManager.IMPORTANCE_LOW
可以解决问题。 NotificationManager.IMPORTANCE_MIN
也可以;参见此处:https://developer.android.com/training/notify-user/channels#importance
答案 4 :(得分:0)
添加notificationChannel.setVibrationPattern(new long[]{ 0L });
卸载应用程序或清除应用程序数据。再次运行它将起作用!
原因:channel_id已注册申请。