首页 > 解决方案 > Android Auto,如何用 MessagingStyle 替换 CarExtender(已弃用)

问题描述

所以我有一个应用程序,作为附带操作,向 Android Auto 发送通知(不仅仅是向 AA,还有其他通知)。

到目前为止,我们只是将 UnreadConversation 添加到 NotificationCompat.Builder

    val builder = NotificationCompat.Builder(context, notificationHolder.channelID)
    ... 
    if (unreadConversationForAndroidAuto != null) {
        builder.extend(NotificationCompat.CarExtender()
            .setUnreadConversation(unreadConversationForAndroidAuto))
    }

NotificationCompat.CarExtender().setUnreadConversation() 现在已弃用,我找不到任何有关如何添加 MessagingStyle(这是取代 UnreadConversation 的)作为通知的附加消息的文档。

我不想发送 2 条不同的消息,而我们之前只发送了一条。我怎样才能最简单地重构它以走新路。

标签: androidandroid-10.0android-auto

解决方案


以前,你会有

builder.setContentTitle(notificationDetails)
        .setSmallIcon(R.drawable.smarter_garage_icon)
        .setContentText("Click notification to return to app")
        .setContentIntent(notificationPendingIntent)
        .setContentTitle( "content title" )
        .setWhen( Calendar.getInstance().get( Calendar.SECOND ) )
        .extend(new NotificationCompat.CarExtender()
                .setUnreadConversation(getUnreadConversation(context) ) );

现在您需要新方法,您可以尝试如下:

import androidx.core.app.NotificationCompat.MessagingStyle.Message;

        // Define the notification settings.
        builder.setContentTitle(notificationDetails)
                .setSmallIcon(R.drawable.smarter_garage_icon)
                .setContentText("Click notification to return to app")
                .setContentIntent(notificationPendingIntent)
                .setContentTitle( "content title" )
                .setWhen( Calendar.getInstance().get( Calendar.SECOND ) )
                .setStyle(new NotificationCompat.InboxStyle()).setTimeoutAfter(10000).setContentText("Hello").addPerson(new Person.Builder().build()).build();

推荐阅读