Android notfication BigPictureStyle disappearing t

2019-03-11 01:50发布

问题:

I'm being implementing Android rich notifications using the compatibility library, so all my notifications are being built using android.support.v4.app.NotificationCompat.Builder

the code I'm using is the following:

  // Base notification
  NotificationCompat.Builder b = new NotificationCompat.Builder(context);
  b.setSmallIcon(R.drawable.ic_actionbar);
  b.setContentTitle(title);
  b.setContentText(Html.fromHtml(msg));
  b.setTicker(title);
  b.setWhen(System.currentTimeMillis());
  b.setDeleteIntent(getDismissNotificationsPendingIntent(quantity));
  b.setLargeIcon(Picasso.with(context).load(iconUrl).get());

  // BigPictureStyle
  NotificationCompat.BigPictureStyle s = new NotificationCompat.BigPictureStyle();
  if (expandedIconUrl != null) {
      s.bigLargeIcon(Picasso.with(context).load(expandedIconUrl).get());
  } else if (expandedIconResId > 0) {
      s.bigLargeIcon(BitmapFactory.decodeResource(context.getResources(), expandedIconResId));
  }
  s.bigPicture(Picasso.with(context).load(bigImageUrl).get());
  b.setStyle(s);
  b.setContentIntent( // some intent
  b.addAction(R.drawable.ic_notification_ // some action
  Notification n = b.build();

  // and go ahead to show it

There's a bit of extra basically not loading any images if showing images is not compatible, so we don't use memory for no reason, but that's the base and I'm expecting something similar to the notification to the right of the following image

the problem is that the message (on the example "Touch to view your screenshot.") shows when the notification is contracted, but when the notification is expanded the message disappears.

Is there any setMessage() method I am forgetting to call? Is that a bug with NotificationCompat? Can anyone give some insight here?

回答1:

Is there any setMessage() method I am forgetting to call?

Yep! NotificationCompat.BigPictureStyle setSummaryText



回答2:

 mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
 mNotificationManager.notify(0, setBigPictureStyleNotification()); 

private Notification setBigPictureStyleNotification() {
    Bitmap remote_picture = null;

    // Create the style object with BigPictureStyle subclass.
    NotificationCompat.BigPictureStyle notiStyle = new NotificationCompat.BigPictureStyle();
    notiStyle.setBigContentTitle("Big Picture Expanded");
    notiStyle.setSummaryText("Nice big picture.");

    try {
        remote_picture = BitmapFactory.decodeStream((InputStream) new      URL(sample_url).getContent());
    } catch (IOException e) {
        e.printStackTrace();
    }

    // Add the big picture to the style.
    notiStyle.bigPicture(remote_picture);

    // Creates an explicit intent for an ResultActivity to receive.
    Intent resultIntent = new Intent(this, ResultActivity.class);

    // This ensures that the back button follows the recommended convention for the back key.
    TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);

    // Adds the back stack for the Intent (but not the Intent itself).
    stackBuilder.addParentStack(ResultActivity.class);

    // Adds the Intent that starts the Activity to the top of the stack.
    stackBuilder.addNextIntent(resultIntent);
    PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);

    return new NotificationCompat.Builder(this)
            .setSmallIcon(R.drawable.ic_launcher)
            .setAutoCancel(true)
            .setLargeIcon(remote_picture)
            .setContentIntent(resultPendingIntent)
            .addAction(R.drawable.ic_launcher, "One", resultPendingIntent)
            .addAction(R.drawable.ic_launcher, "Two", resultPendingIntent)
            .addAction(R.drawable.ic_launcher, "Three", resultPendingIntent)
            .setContentTitle("Big Picture Normal")
            .setContentText("This is an example of a Big Picture Style.")
            .setStyle(notiStyle).build();
}