如何创建最小化的正在进行的通知,例如USB连接或Google Weather

时间:2019-02-04 17:14:49

标签: c# android xamarin.android android-notifications

我正在开发Xamarin.Android应用程序,该应用程序使用Foreground Service在特定时间/距离后跟踪用户的位置。

要保持服务运行,我还有一个低优先级的正在进行的通知以及一个低优先级的通知通道。我已经尝试了各种组合(低优先级和最低优先级以及内容文本)。

NotificationChannel代码:

private NotificationChannel CreateNotificationChannel(string channelId)
{
    if (Build.VERSION.SdkInt < BuildVersionCodes.O)
    {
        return null;
    }
    string channelName = Resources.GetString(Resource.String.notification_channel_name);
    string channelDesc = Resources.GetString(Resource.String.notification_channel_desc);
    NotificationChannel notificationChannel = new NotificationChannel(channelId, channelName, NotificationImportance.Default)
    {
        Description = channelDesc
    };
    switch(channelId)
    {
        case UPDATES_NOTIFICATION_CHANNEL_ID: 
            notificationChannel.Importance = NotificationImportance.High;
            break;
        case ONGOING_NOTIFICATION_CHANNEL_ID:
            notificationChannel.Importance = NotificationImportance.Low;
            break;
        default:
            break;
    }
    var notifManager = (NotificationManager)GetSystemService(NotificationService);
    notifManager.CreateNotificationChannel(notificationChannel);
    return notificationChannel;
}

通知代码:

private Notification CreateOngoingNotification()
{
    Intent notificationIntent = new Intent(this, typeof(MainActivity));
    PendingIntent pendingIntent =
        PendingIntent.GetActivity(this, 0, notificationIntent, 0);
    string content = "The application is fetching your location every " + MIN_TIME / (60 * 1000) + " minutes if you moved at least " + MIN_DISTANCE + " meters.";
    NotificationCompat.Builder builder;
    if (Build.VERSION.SdkInt < BuildVersionCodes.O) builder = new NotificationCompat.Builder(this);
    else builder = new NotificationCompat.Builder(this, m_ongoingNotificationChannel.Id);
    builder
            .SetContentTitle("Persistent notification")
            .SetStyle(new NotificationCompat.BigTextStyle().BigText(content))
            .SetSmallIcon(Resource.Drawable.ic_notification)
            .SetContentIntent(pendingIntent)
            .SetGroup("persistent")
            .SetOngoing(true)
            .SetVisibility((int)NotificationVisibility.Private)
            .SetPriority((int)NotificationPriority.Low);
    Notification notification = builder.Build();
    return notification;
}

请牢记以下图像,我要完成的是来自LinkedIn应用的通知的样式,一个是Google Weather(底部),另一个是(末尾第3个)通知。

我所能获得的只是标题中带有“持久通知”的那个。

THIS

欢迎任何帮助!

编辑:明确表明我使用的是Xamarin,而不是Java

1 个答案:

答案 0 :(得分:0)

如果我没看错,而您正在寻找expandable notification

  

基本通知通常包括标题,一行文本以及用户可以作为响应执行的一个或多个操作。要提供更多信息,您还可以通过应用多个通知模板之一来创建大型的,可扩展的通知。

现在,如果您仔细阅读文档,它会显示所有不同类型的可扩展通知,

您要寻找的是Create an inbox-style notificationXamarin.Android

文档中提供的两种代码都可以轻松转换为C#,即<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> Hello World! </body> </html>

如果您遇到问题或查询随时可以还原

祝你好运