我需要从外部url通过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.builder的开发人员文档,您将看到setSmallIcon(int icon)需要在应用程序的drawable包中使用一个资源id。
下载图像,转换为位图,然后将其设置为setSmallIcon(int resId)仍然会给您一个错误。
即使要将位图转换为可绘制的,例如:

Drawable d = new BitmapDrawable(getResources(), bmpFinal);

它仍然会给您一个错误,因为在您的应用程序包中不存在该可绘制性。
唯一可能的解决方案是使用包中存在的可绘制资源并将其设置为setSmallIcon()方法。典型用法:
builder.setSmallIcon(R.drawable.ic_launcher);

或者,setLargeIcon (Bitmap icon)需要一个位图实例。无需对当前代码进行任何其他更改(因为您已经有了位图),如果符合您的要求,您可以按原样使用它。
如果没有,您几乎必须使用已经存在于其中一个可绘制文件夹中的Drawable资源。

09-27 02:45