6

У меня возникли проблемы с получением уведомлений о большом тексте Android для работы, как описано здесь: NotificationCompat.BigTextStyle. Вот код, который я использую для отображения уведомлений. Я знаю, что все данные вернутся правильно, потому что я могу отобразить их на консоли и в качестве традиционного текста и заголовка контента. Я делаю что-то неправильно? Нужно ли также определять bigTestStyle где-то еще? Надеюсь, один из вас сделал это раньше и знает, чего не хватает. Благодарю.Уведомление Big Text Android GCM

As you can see the big text message text is not displaying

Мой код:

NotificationCompat.BigTextStyle bigTextStyle = new NotificationCompat.BigTextStyle(); 
    bigTextStyle.bigText(extras.getString("message")); 
    NotificationCompat.Builder bigTextNotification = new NotificationCompat.Builder(context) 
      .setContentTitle("My App") 
      .setContentIntent(pendingIntent) 
      .setContentText("Message:") 
      .setSound(soundUri) 
      .setTicker(extras.getString("message")) 
      .setWhen(System.currentTimeMillis()) 
      .setSmallIcon(R.drawable.splash) 
      .setAutoCancel(true) 
      .setVibrate(new long[] { 0, 100, 200, 300 }) 
      .setStyle(bigTextStyle); 
    final int notificationId = (int) (System.currentTimeMillis()/1000L); 
    NotificationManager thisone = (NotificationManager) getApplicationContext() 
      .getSystemService(Context.NOTIFICATION_SERVICE); 

    thisone.notify(notificationId, bigTextNotification.build()); 
+0

У меня есть холст для микромакса A74, версия Android 4.2.2. Использование 'NotificationCompat' отлично работает для меня. Однако, когда я использую' Notification.Bulider', 'BigTextStyle' отлично работает, но обычный стиль уведомления не работает. отобразите значок уведомления без какого-либо текста в нем. –

ответ

4

От NotificationCompat.BigTextStyle документация:

класса Helper для формирования уведомлений большого формата, которые включают в себя много текста. Если платформа не предоставляет широкоформатные уведомления, этот метод не имеет эффекта. Пользователь всегда будет видеть обычное уведомление.

Возможно, ваша платформа не поддерживает широкоформатные уведомления.

EDIT:

С другой стороны, вполне возможно, ваша проблема здесь:

NotificationCompat.BigTextStyle bigTextStyle = new NotificationCompat.BigTextStyle(); 
bigTextStyle.bigText(extras.getString("message")); 

Вы не используете возвращаемое значение bigText.

Попробуйте изменить его на:

NotificationCompat.BigTextStyle bigTextStyle = new NotificationCompat.BigTextStyle(); 
bigTextStyle = bigTextStyle.bigText(extras.getString("message")); 

или:

NotificationCompat.BigTextStyle bigTextStyle = new NotificationCompat.BigTextStyle().bigText(extras.getString("message")); 

EDIT2:

Costom Уведомление Layout для старых версий Android:

protected void onMessage(Context context, Intent intent) { 
    // Extract the payload from the message 
    Bundle extras = intent.getExtras(); 
    if (extras != null) { 
     String message = (String) extras.get("message"); 
     String title = (String) extras.get("title");     

     // add a notification to status bar 
     NotificationManager mManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
     Intent myIntent = new Intent(this,MyActivity.class); 
     Notification notification = new Notification(R.drawable.notification_image, title, System.currentTimeMillis()); 
     notification.flags |= Notification.FLAG_AUTO_CANCEL; 

     RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.custom_notification); 
     contentView.setImageViewResource(R.id.image, R.drawable.notification_image); 
     contentView.setTextViewText(R.id.title, title); 
     contentView.setTextViewText(R.id.text, message); 
     notification.contentView = contentView; 
     notification.contentIntent = PendingIntent.getActivity(this.getBaseContext(), 0, myIntent, PendingIntent.FLAG_CANCEL_CURRENT); 
     mManager.notify(0, notification); 
     PowerManager pm = (PowerManager) 
     context.getSystemService(Context.POWER_SERVICE); 
     WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "TAG"); 
     wl.acquire(15000); 
    } 
} 
+0

Ни один из них не работал. Не уверен, что bigTextStyle строится как часть bigTextNotification – centree

+0

В этом случае ваше устройство или версия Android не поддерживают широкоформатные уведомления. – Eran

+0

Я использую совершенно новый S3. – centree

Смежные вопросы