我正在尝试在Android上实现大图片通知,我发现似乎有一些未记录的图片大小限制,这使得我的通知不起作用,具体取决于我使用的图像大小。
例如,如果我在1024x512
放置一个drawable-xxxhdpi
图像(对于较低密度的设备应该适当缩放),则通知永远不会显示。如果我放置512x256
图像,则每次都会显示完美。这两个图像都比大图片通知应该支持的256 dp
高度小得多。
我已经完成了代码,一切都按预期工作。在两种情况下都会正确创建和安排通知(我没有错误或例外),它们从未出现过。当应用程序发送到后台时会创建通知,出于测试目的,我将它们设置为在几秒钟内触发。
我尝试过很多图像尺寸和宽高比,以及缩小它的类型,但不同设备的数字似乎不同。
我可以在任何地方获得有关这些限制的信息吗?(参见编辑)。我是否应该做些什么来确保尽管图像大小会触发我的通知?
这是我正在使用的代码。对不起,如果它看起来有点奇怪,这是一个很大的代码库,我复制并粘贴了几个函数的代码。
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(context);
notificationBuilder.setContentTitle(title);
notificationBuilder.setPriority(NotificationCompat.PRIORITY_MAX);
notificationBuilder.setWhen(0);
notificationBuilder.setContentText(content);
Bitmap notificationLargeIconBitmap = BitmapFactory.decodeResource(Activity.getResources(), R.drawable.ic_lollipop_noti);
notificationBuilder.setLargeIcon(notificationLargeIconBitmap);
notificationBuilder.setSmallIcon(R.drawable.ic_lollipop_statbar);
notificationBuilder.setColor(0xffe20b00);
Bitmap bigPicture = BitmapFactory.decodeResource(activity.getResources(), R.drawable.notif_image);
NotificationCompat.BigPictureStyle style = new NotificationCompat.BigPictureStyle();
style.setBigContentTitle(p_title);
style.setSummaryText(p_content);
style.bigPicture(bigPicture);
notificationBuilder.setStyle(style);
Intent resultIntent = new Intent(context, Launcher.class);
resultIntent.setAction(Intent.ACTION_MAIN);
resultIntent.addCategory(Intent.CATEGORY_LAUNCHER);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, resultIntent, 0);
notificationBuilder.setContentIntent(pendingIntent);
Notification notification = notificationBuilder.build();
notification.flags |= Notification.FLAG_AUTO_CANCEL;
Intent intent = new Intent(context, LocalNotificationEmitter.class);
intent.setAction(NOTIFICATION);
intent.putExtra(LocalNotificationEmitter.NOTIFICATION_TAG, id);
intent.setData(Uri.parse(id));
intent.putExtra(LocalNotificationEmitter.NOTIFICATION, p_notification);
PendingIntent mAlarmIntent = PendingIntent.getBroadcast(contex, 0, intent,
Intent.FLAG_GRANT_READ_URI_PERMISSION);
Long delay = Long.valueOf(delay) * 1000;
long futureInMillis = System.currentTimeMillis() + delay;
mAlarmManager.set(AlarmManager.RTC, futureInMillis, mAlarmIntent);
编辑:我制作了一个简单的应用程序,只是为了测试大图片通知,而且正在使用任何图像尺寸。很明显,我们在主应用程序上使用的代码出了问题。有人在我发布的代码中看到任何错误吗?我会继续寻找......
答案 0 :(得分:0)
如果这可以帮助任何人,我发现将通知创建移动到LocalNotificationEmitter
类'onReceive
方法而不是将其捆绑到intent中使其每次都有效。