我在处理 Android 的
notifications
问题上遇到了困难:当我在开发项目时,突然模拟器在 API
26 及以上版本上不再播放通知声音,例如需要一个通道的 API。
当然,我已经设置了通道,并且之前一直很好用!我已经重新安装了应用程序,删除了通道,甚至使用 API
27 设置了另一个 AVD,但结果相同:没有声音!(通知会弹出)
显然,我已经检查过是否启用了通知声音,特别是对于这个特定的通道,一切看起来都没问题,只是没有声音。
如果我使用以下测试进行播放:RingtoneManager.getRingtone(context, RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION)).play();
它按照正常工作,因此没有硬件问题。
在低于26的APIs
中,您不需要通道即可播放声音。
有人遇到了同样的问题吗?
//make the channel
//The Config class is imported and the constants resolved, not the problem
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){
NotificationChannel channel = new NotificationChannel(
Config.CHANNEL_1_ID,
Config.CHANNEL_1_NAME,
NotificationManager.IMPORTANCE_HIGH);
channel.setDescription(Config.CHANNEL_1_DESC);
channel.enableLights(true);
channel.enableVibration(true);
channel.setShowBadge(true);
NotificationManager manager = getSystemService(NotificationManager.class);
manager.createNotificationChannel(channel);
}
// send notification
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(context, Config.CHANNEL_1_ID)
.setSmallIcon(R.drawable.ic_notifications_black_24dp)
.setContentTitle(title)
.setContentText(body)
.setAutoCancel(false)
.setColor(context.getResources().getColor(R.color.colorPrimary))
.setDefaults(Notification.DEFAULT_VIBRATE | Notification.DEFAULT_SOUND | Notification.FLAG_SHOW_LIGHTS)
.setPriority(NotificationCompat.PRIORITY_HIGH);
NotificationManagerCompat mNotificationMgr = NotificationManagerCompat.from(context);
mNotificationMgr.notify(1, mBuilder.build());