Скрыть текст тикера в уведомлении с помощью Notification.Builder

Я пытаюсь отобразить текущее уведомление без начального отображения текста тикера. Мне удалось заставить это работать с уведомлением в старом стиле, установив для текста тикера значение null в конструкторе:

mNotification = new Notification(R.drawable.ic_stat_playing, null, System.currentTimeMillis());

Однако я заметил, что создание экземпляра уведомления таким образом теперь устарело, и вместо этого рекомендуется использовать Notification.Builder. Однако теперь я не могу получить уведомление для отображения без текста тикера, даже если я установил для текста тикера значение null:

Notification.Builder builder = new Notification.Builder(this);

CharSequence contentText = "contentText here";

Intent launchIntent = new Intent(this, MainActivity.class);

// The PendingIntent to launch our activity if the user selects this
// notification
PendingIntent contentIntent = PendingIntent.getActivity(this, -1,
                launchIntent, PendingIntent.FLAG_UPDATE_CURRENT);

builder.setContentIntent(contentIntent)
    .setSmallIcon(R.drawable.ic_stat_playing)
    .setLargeIcon(null)
    .setTicker(null)
    .setOnlyAlertOnce(true)                 
    .setWhen(System.currentTimeMillis())
    .setContentTitle(contentTitle)
    .setOngoing(true)
    .setContentText(contentText);

mNotification = builder.getNotification();

startForeground(NOTIFICATION_ID, mNotification);

Разве нельзя отключить отображение бегущей строки с помощью нового Notification.Builder? Это так, к сожалению, так как я не смогу обновить устаревший код.

Изменить. Код, который наконец сработал:

mNotification = builder.getNotification();

mNotification.tickerView = null;

startForeground(NOTIFICATION_ID, mNotification);

person inky    schedule 26.06.2012    source источник
comment
Это правильный способ сделать это (то есть setTicker(null)). Что происходит с приведенным выше кодом? Тикер все равно появляется? Какая ОС, устройство и т.д.?   -  person dsandler    schedule 05.07.2012
comment
Спасибо за ответ. Да, с приведенным выше кодом тикер все равно появляется. Я тестирую это на планшете Asus Transformer TF101 под управлением Android 4.0.3 и 10,1-дюймовом планшете Galaxy Tab под управлением Android 3.2.   -  person inky    schedule 07.07.2012


Ответы (2)


попробуйте установить для tickerView значение null после builder. это отлично работает для меня Код вроде:

Notification notif = builder.build();
notif.tickerView = null;
mNotificationManager.notify(id, notif);
person kkate    schedule 30.05.2013
comment
Спасибо, это наконец исправило это для меня! - person inky; 30.05.2013
comment
Спасибо, у меня было такое же поведение, и только так я это исправил! - person Jagoliveira; 15.08.2013

Вам вообще не нужно включать .setTicker, просто оставьте его следующим образом:

builder.setContentIntent(contentIntent)
.setSmallIcon(R.drawable.ic_stat_playing)
.setLargeIcon(null)
.setOnlyAlertOnce(true)                 
.setWhen(System.currentTimeMillis())
.setContentTitle(contentTitle)
.setOngoing(true)
.setContentText(contentText);
person Eugene van der Merwe    schedule 18.10.2012