gpt4 book ai didi

java - .setSmallIcon 未更改通知图标

转载 作者:行者123 更新时间:2023-11-30 10:04:53 25 4
gpt4 key购买 nike

我正在 android 中实现通知。我想更改通知图标,但问题是 setSmallIcon 不起作用。我的自定义图标显示在 lollipop 设备中,但未在 lollipop 设备上方显示自定义图标。

我试过下面的代码:

send_notification.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Bitmap icon = BitmapFactory.decodeResource(getResources(),R.drawable.book2);

NotificationCompat.Builder builder = new NotificationCompat.Builder(MainActivity.this)
.setContentTitle("New Book Added")
.setContentText("Android with java")
.setStyle(new NotificationCompat.BigPictureStyle()
.bigPicture(icon)
.bigLargeIcon(null));
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
builder.setSmallIcon(R.drawable.ic_notification);
} else {
builder.setSmallIcon(R.drawable.notification);
}
NotificationManager manager= (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
manager.notify(1,builder.build());
}
}

大图也没有显示。请帮忙。

编辑:

Bitmap icon = BitmapFactory.decodeResource(getResources(), R.drawable.test);

String channelId = getString(R.string.default_notification_channel_id);

NotificationCompat.Builder builder = new NotificationCompat.Builder(this, channelId);

if (remoteMessage.getData().size() > 0) {
String title = remoteMessage.getData().get("title");
String text = remoteMessage.getData().get("body");

builder.setContentTitle(title)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentText(text)
.setLargeIcon(icon)
.setPriority(Notification.PRIORITY_MAX)
.setStyle(new NotificationCompat.BigPictureStyle()
.bigLargeIcon(icon));

} else if (remoteMessage.getNotification() != null) {
String title = remoteMessage.getNotification().getTitle();
String text = remoteMessage.getNotification().getBody();

builder.setContentTitle(title)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentText(text)
.setLargeIcon(icon)
.setPriority(Notification.PRIORITY_MAX)
.setStyle(new NotificationCompat.BigPictureStyle()
.bigLargeIcon(icon));

}

NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {

NotificationChannel notificationChannel = new NotificationChannel(channelId, "Testing channel", NotificationManager.IMPORTANCE_DEFAULT);
manager.createNotificationChannel(notificationChannel);

}
manager.notify(1, builder.build());

最佳答案

尝试卸载并重新安装 100% 新鲜的应用程序。 Android 保留缓存以便更快地运行,通知就是其中之一。

一段时间前,卸载并重新安装对我的问题有效。

另外请记住,在 Android Oreo 及更高版本中,为了使通知正常工作;必须创建通知 channel ,并且您正在创建的通知也应该分配给其中一个 channel 。

编辑

我尝试过的方法(对我有用):(Kotlin 中的示例,但应该足够相似);

fun onClick(view: View) {
var icon_resource = R.drawable.ic_mtrl_chip_close_circle
if(Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {
icon_resource = R.drawable.ic_mtrl_chip_checked_circle
}

val icon = BitmapFactory.decodeResource(resources,R.mipmap.ic_launcher_round)

val notification = NotificationCompat.Builder(this)
.setSmallIcon(icon_resource)
.setContentTitle("New Book Added")
.setContentText("Android with java")
.setLargeIcon(icon)
.setStyle(NotificationCompat.BigPictureStyle()
.bigPicture(icon)
.bigLargeIcon(null)).build()

val manager= getSystemService(NOTIFICATION_SERVICE) as NotificationManager
manager.notify(1,notification)
}

第二次编辑

我认为您的图片有问题(就像我的图片一样;尺寸或其他)。在花了很多时间试图弄清楚为什么它没有在通知中显示启动器图标后,我决定尝试使用我放置的其中一张图片...

使用 Android O 测试; API 28

结果如下:

Collapsed Expanded

随意尝试使用我使用的原始图像: WTF_Gopher

这是支持这些结果的代码;它与第一个没有太大区别...

// Parametherise this drawable with an if statement of your own
var icon_resource = R.drawable.ic_mtrl_chip_close_circle

val manager= NotificationManagerCompat.from(this)
// This is required because the testing device is an Android O
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
manager.createNotificationChannel(
NotificationChannel("CUSTOM_NOTIFICATIONS", "StackOverflow", NotificationManager.IMPORTANCE_HIGH)
)
}

val icon = BitmapFactory.decodeResource(resources,R.mipmap.dafuq)

val notification = NotificationCompat.Builder(this, "CUSTOM_NOTIFICATIONS")
.setSmallIcon(icon_resource)
.setContentTitle("New Book Added")
.setContentText("Android with java")
.setLargeIcon(icon)
.setStyle(NotificationCompat.BigPictureStyle()
.bigPicture(icon)
.bigLargeIcon(null)).build()

manager.notify(1,notification)

附加信息:

当我使用错误的图像时,我的 Logcat 中会出现这个讨厌的日志。检查相同或相似的!2019-04-10 20:11:02.120 3434-3434/com.example.deletemeapp D/skia: --- 无法使用消息“未实现”创建图像解码器

关于java - .setSmallIcon 未更改通知图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55597910/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com