1

我已经为通知设置了自定义声音。它适用于某些设备,但不适用于某些设备,主要是Xiaomi设备。

我用过这段代码:

private fun createNotificationChannel(){
    val context = AppApplication.getContext()
    val notificationManagerCompat = NotificationManagerCompat.from(context)
    preChannelIds.forEach {
        deleteChannel(notificationManagerCompat,it)
    }
    if ( Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){
        val attributes = getAudioAttributes()
        val soundUri = getSoundUri(context)
        val importance = NotificationManagerCompat.IMPORTANCE_HIGH
        val channelBuilder = NotificationChannelCompat.Builder(channelId, importance).apply {
            setName(channelName)
            setDescription(channelDescription)
            setSound(soundUri, attributes)
            setVibrationPattern(vibrationPattern)
            setLightsEnabled(true)
            setShowBadge(true)
        }
        val channel = channelBuilder.build()
        notificationManagerCompat.createNotificationChannel(channel)
    }
}



fun sendNotification(title:String, message:String){

    val context = AppApplication.getContext()
    val intent = ....

    val notificationManagerCompat = NotificationManagerCompat.from(AppApplication.getContext())

    val pendingIntent = PendingIntent.getActivity(
        AppApplication.getContext(), notificationRequestCode, intent,
            PendingIntent.FLAG_UPDATE_CURRENT)

    val notificationBuilder = NotificationCompat.Builder(AppApplication.getContext(), channelId)
        .setSmallIcon(getNotificationIcon())
        .setContentTitle(title)
        .setContentText(message)
        .setStyle(NotificationCompat.BigTextStyle().bigText(message))
        .setAutoCancel(true)
        .setVibrate(vibrationPattern)
        .setColor(ContextCompat.getColor(AppApplication.getContext(), R.color.colorPrimary))
        .setContentIntent(pendingIntent)

    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O){
        notificationBuilder.priority = NotificationCompat.PRIORITY_MAX
        notificationBuilder.setSound(getSoundUri(context))
    }

    val notification = notificationBuilder.build()
    notification.flags = Notification.FLAG_INSISTENT

    notificationManagerCompat.notify(notificationRequestCode, notification)
}

请帮我解决某些设备的这个问题。这个问题还有其他解决方案吗。

4

0 回答 0