如何重新显示代码文本?
How do I redisplay Ticker Text?
对于我的应用程序,我使用一个通知 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);
Android 如果与以前相同,则不会再次显示代码文本。
您可以使用 setTicker API of Notification.Builder
class 而不是使用 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());
对于我的应用程序,我使用一个通知 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);
Android 如果与以前相同,则不会再次显示代码文本。
您可以使用 setTicker API of Notification.Builder
class 而不是使用 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());