我需要通过PNG从外部网址设置小型Android通知图标,而不是使用mipmap。
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
notificationBuilder.setSmallIcon(R.mipmap.ic_notification);
notificationBuilder.setColor(ContextCompat.getColor(getApplicationContext(), android.R.color.transparent));
}
需要传递外部PNG图像而不是使用:R.mipmap.ic_notification
有人知道是否有可能吗?
答案 0 :(得分:3)
如果您阅读特定于Notification.Builder的开发人员文档,您将看到setSmallIcon(int icon)
需要在应用程序的drawable包中使用A资源ID。
下载图片,转换为位图,然后将其设置为setSmallIcon(int resId)
仍然会给您一个错误。
即使您要将Bitmap转换为Drawable,例如:
Drawable d = new BitmapDrawable(getResources(), bmpFinal);
它仍然会给你一个错误,因为你的应用程序包中不存在Drawable。
唯一可行的解决方案是使用包中存在的Drawable资源并将其设置为setSmallIcon()
方法。典型用法:
builder.setSmallIcon(R.drawable.ic_launcher);
或者,setLargeIcon (Bitmap icon)
需要一个Bitmap实例。无需在当前代码中进行任何其他更改(因为您已经有了Bitmap),如果符合您的要求,您可以按原样使用它。
如果没有,您几乎必须使用其中一个可绘制文件夹中已存在的Drawable
资源。