Android通知可正常触发但接收时无振动效果问题咨询
Android通知无振动问题解决方法
核心问题
- 代码执行顺序错误
当前代码先构建Notification实例、后创建通知渠道。Android 8.0及以上系统要求通知渠道必须在发送通知前完成创建,否则构建通知时引用的渠道还未完成振动配置,相关参数不会生效。 - 缺少低版本系统兼容
Android 7.1及以下系统不支持通知渠道机制,振动配置需要直接在NotificationCompat.Builder中添加,否则低版本设备不会触发振动。 - 通知渠道修改限制
通知渠道一旦首次创建完成,后续代码修改渠道的振动、优先级等配置都不会生效,必须卸载应用重新安装,或者在系统应用通知设置中删除原有渠道,新配置才会生效。 - 系统权限与状态校验
- Android 13及以上版本需要先申请
POST_NOTIFICATIONS动态权限,无权限时通知相关功能都会受限制 - 检查设备是否开启了静音/勿扰模式,是否给当前应用开放了通知振动权限,部分国产厂商系统需要单独在应用通知设置中开启振动开关
- 可以尝试将通知渠道的重要等级从
NotificationManager.IMPORTANCE_DEFAULT调整为NotificationManager.IMPORTANCE_HIGH,部分设备默认对低重要等级通知关闭振动
- Android 13及以上版本需要先申请
修正后代码示例
String CHANNEL_ID = "Channel1"; NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); // 先创建通知渠道,再构建通知 if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) { NotificationChannel channel = new NotificationChannel(CHANNEL_ID, CHANNEL_ID, NotificationManager.IMPORTANCE_HIGH); channel.enableVibration(true); channel.setVibrationPattern(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400}); notificationManager.createNotificationChannel(channel); } inboxStyle.addLine("Alex Faarborg Check this out"); inboxStyle.setBigContentTitle(messagesCount + " new messages"); inboxStyle.setSummaryText("Chat room"); Notification summaryNotification = new NotificationCompat.Builder(MainActivity.this, CHANNEL_ID) .setContentTitle("Chatroom has new messages") .setContentText(messagesCount+" new messages") .setSmallIcon(R.drawable.ic_launcher_background) .setStyle(inboxStyle) .setGroupSummary(true) // 兼容Android 7.1及以下版本的振动配置 .setVibrate(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400}) .build(); notificationManager.notify(SUMMARY_ID, summaryNotification);
内容的提问来源于stack exchange,提问作者user2964156
相关产品推荐
相关产品推荐

