Android notfication BigPictureStyle正在消失文本是怎么回事?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (47)

我正在使用兼容性库实现Android丰富的通知,所以我的所有通知都是使用内置的 :android.support.v4.app.NotificationCompat.Builder

我使用的代码如下:

  // 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

如果显示的图像不兼容,有一些额外的基本上不加载任何图像,所以我们没有任何理由使用内存,但这是基础,我期待类似于下图中右侧的通知:

问题在于该消息(例如“触摸查看您的屏幕截图”)显示何时收到通知,但是当通知展开时消息消失。

有没有setMessage()我忘记打电话的方法?这是一个错误NotificationCompat

提问于
用户回答回答于
你可以试试这样的代码:
 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();
}

扫码关注云+社区