通知内容标题和内容文字没有显示

时间:2018-06-07 05:15:38

标签: android push-notification notifications localnotification

我正在生成多行的本地通知。所有行都显示正确,但没有显示contentTitle和contentText。

以下是我生成通知的代码:

Intent notificationIntent = new Intent(context, MainActivity.class);

notificationIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK |
        Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);

TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);
stackBuilder.addParentStack(MainActivity.class);
stackBuilder.addNextIntent(notificationIntent);


int num = (int) System.currentTimeMillis();

PendingIntent pendingIntent = stackBuilder.getPendingIntent(num, PendingIntent.FLAG_UPDATE_CURRENT);

String id = "notification_channel_id";
CharSequence name = "Message_Notification";
Bitmap bm = BitmapFactory.decodeResource(context.getResources(), R.mipmap.ic_launcher);

NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(context, id)
        .setSmallIcon(R.mipmap.ic_launcher)
        .setContentTitle("title")
        .setContentText("time")
        .setAutoCancel(true)
        .setGroupSummary(true)
        .setGroup(GROUP_KEY)
        .setContentIntent(pendingIntent)
        .setChannelId(id);

if (subTitle != null) {
    NotificationCompat.InboxStyle inboxStyle = new NotificationCompat.InboxStyle();

    inboxStyle.setBigContentTitle("Dose Reminder");

 if (subTitle.contains("---")) {

        String[] splitStrings = subTitle.split("---");

        for (int i = 0; i < splitStrings.length; i++) {
            inboxStyle.addLine(splitStrings[i]);
        }
    } else {
        inboxStyle.addLine(subTitle);

        // Moves the expanded layout object into the notification object.
        notificationBuilder.setStyle(inboxStyle);

    }

    // Moves the expanded layout object into the notification object.
    notificationBuilder.setStyle(inboxStyle);
}

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    notificationBuilder.setColor(ContextCompat.getColor(context, R.color.colorAccent));
} else {
    notificationBuilder.setLargeIcon(bm);
}

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    NotificationManager notificationManager = (NotificationManager) context.getSystemService(context.NOTIFICATION_SERVICE);

    // The user.-visible description of the channel.
    String description = "Notifications contains messages which was sent by dev team.";
    int importance = NotificationManager.IMPORTANCE_MAX;
    NotificationChannel mChannel = new NotificationChannel(id, name, NotificationManager.IMPORTANCE_DEFAULT);
    // Configure the notification channel.
    mChannel.setDescription(description);
    mChannel.enableLights(true);
    // Sets the notification light color for notifications posted to this
    // channel, if the device supports this feature.
    mChannel.setLightColor(Color.RED);
    if (notificationManager != null) {
        notificationManager.createNotificationChannel(mChannel);
    }
}

// Sets an ID for the notification

// Gets an instance of the NotificationManager service
final NotificationManager mNotifyMgr =
        (NotificationManager) context.getSystemService(context.NOTIFICATION_SERVICE);
// Builds the notification and issues it.
if (mNotifyMgr != null) {
    mNotifyMgr.notify(num, notificationBuilder.build());

}

当通知到来时#34;标题&#34;和&#34;时间&#34;没有显示。它显示&#34; Dose Reminder&#34;和多个行的子标题。

我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

setBigContentTitle(CharSequence title)

以模板的大表格覆盖ContentTitle。

https://developer.android.com/reference/android/app/Notification.InboxStyle

检查使用MessagingStyle 部分

https://developer.android.com/training/notify-user/build-notification

  

默认情况下,JFYI时间戳在推送通知中消失,Android 7(Nougat)以后