如何重新显示代码文本?

时间:2015-01-16 15:09:20

标签: android android-notifications

对于我的应用,我使用一个通知ID,以免弄乱用户的通知菜单。我的每个通知都有Ticker Text。如果我的应用程序没有通知,并且用户收到通知,则会显示自动收报机文本。当通知已存在且仅更新时,不会显示自动收报机文本。

我做了一个非常hacky的工作,在我通知之前我取消了通知,但这最终导致振动的非常明显的滞后。

目前我的通知方式如下:

    mBuilder.setSmallIcon(R.drawable.actionbar_logo)
            .setContentTitle(extras.getString("title"))
            .setContentText(extras.getString("summary"))
            .setAutoCancel(true)
            .setStyle(new NotificationCompat.BigTextStyle()
                            .bigText(extras.getString("extended_text"))
            )
            .setLights(Color.WHITE, NOTIF_LIGHT_INTERVAL, NOTIF_LIGHT_INTERVAL)
            .setDefaults(Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE);

    Intent intent = new Intent(this, MainActivity.class);
    intent.putExtra("mainActivityNotification", true);
    intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);

    PendingIntent contentIntent = PendingIntent.getActivity(this, 424242, intent, PendingIntent.FLAG_UPDATE_CURRENT);

    mBuilder.setContentIntent(contentIntent);

    final Notification notification = mBuilder.build();
    notification.tickerText = extras.getString("title") + "\n" +
                              extras.getString("summary") + "\n" +
                              extras.getString("post_body");

    mNotificationManager.notify(GATE_NOTIFICATION_ID, notification);

1 个答案:

答案 0 :(得分:3)

Android如果与以前相同,则不再显示滚动条文本。

您可以使用Notification.Builder类的 setTicker API,而不是使用Notification对象构建滚动条文本,因为添加了Notification.Builder以便更容易构建通知。

如果您的意图是重新显示相同的滚动条文本(来自之前发布的通知),那么只需添加以下行:

mNotificationManager.notify(GATE_NOTIFICATION_ID, mBuilder.build());

发布第一个通知后。

因此,您的完整代码如下所示:

mBuilder.setSmallIcon(R.drawable.actionbar_logo)
            .setContentTitle(extras.getString("title"))
            .setContentText(extras.getString("summary"))
            .setAutoCancel(true)
            .setStyle(new NotificationCompat.BigTextStyle()
                            .bigText(extras.getString("extended_text"))
            )     //consider using setTicker here
            .setLights(Color.WHITE, NOTIF_LIGHT_INTERVAL, NOTIF_LIGHT_INTERVAL)
            .setDefaults(Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE);

    Intent intent = new Intent(this, MainActivity.class);
    intent.putExtra("mainActivityNotification", true);
    intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);

    PendingIntent contentIntent = PendingIntent.getActivity(this, 424242, intent, PendingIntent.FLAG_UPDATE_CURRENT);

    mBuilder.setContentIntent(contentIntent);

    final Notification notification = mBuilder.build();

    //consider using setTicker of Notification.Builder
    notification.tickerText = extras.getString("title") + "\n" +
                              extras.getString("summary") + "\n" +
                              extras.getString("post_body");

    mNotificationManager.notify(GATE_NOTIFICATION_ID, notification);
    //second time onward, add your changed content like setContentText, setTicker etc.
    mNotificationManager.notify(GATE_NOTIFICATION_ID, mBuilder.build());