如何在Android中将位图设置为通知图标

时间:2014-05-23 19:16:54

标签: android

您好我正在寻找设置位于res目录中的位图的方法。实际上我从URL获取该图标,并希望在通知区域中设置它。

我在这里,但只设置res目录中的图标。

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context)
    .setSmallIcon(R.drawable.ic_stat_logo)
    .setContentTitle(Util.notificationTitle)
    .setStyle(new NotificationCompat.BigTextStyle()
    .bigText(notificationMessage))
    .setAutoCancel(true)
    .setDefaults(Notification.DEFAULT_SOUND)
    .setContentText(notificationMessage);

是否有任何想法从URL设置获取位图并将该图标设置为Notification图标?

4 个答案:

答案 0 :(得分:8)

这里已经回答: https://stackoverflow.com/a/16055373/1071594

摘要:无法设置自定义小图标,但是从API级别11开始,您可以在下载图像并将其转换为setLargeIcon()后使用Bitmap

[edit]还有另一个solution: 如果您使用自己的视图创建完全自定义通知,则可以在该视图中放置任何内容,包括下载的图像。

答案 1 :(得分:4)

我认为你不能直接使用URL,但是你可以使用以下语句,但前提是你使用的是大图标。

此语句将URL转换为BitMap:

Bitmap bitmap = getBitmapFromURL("Your URL");


public Bitmap getBitmapFromURL(String strURL) {
    try {
        URL url = new URL(strURL);
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setDoInput(true);
        connection.connect();
        InputStream input = connection.getInputStream();
        Bitmap myBitmap = BitmapFactory.decodeStream(input);
        return myBitmap;
    } catch (IOException e) {
        e.printStackTrace();
        return null;
    }
}

现在,您可以在通知构建器中使用以下代码:

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context)
    .setLargeIcon(bitmap)
    .setContentTitle(Util.notificationTitle)
    .setStyle(new NotificationCompat.BigTextStyle()
    .bigText(notificationMessage))
    .setAutoCancel(true)
    .setDefaults(Notification.DEFAULT_SOUND)
    .setContentText(notificationMessage);

不要忘记Manifest中的权限:

<uses-permission android:name="android.permission.INTERNET" />

答案 2 :(得分:4)

在API级别23中,Android使用从url下载的位图为setSmallIcon引入了新方法。

    notificationBuilder.setSmallIcon(Icon.createWithBitmap(yourDownloadedBitmap));

答案 3 :(得分:-1)

将自定义png图像设置为Notifications的简单方法是,在app / src / main / res文件夹中创建一个可绘制文件夹,并将该图像粘贴到该文件夹​​中,然后您可以像这样访问该图像

NotificationCompat.Builder mBuilder =新的NotificationCompat.Builder(上下文)     .setSmallIcon(R.drawable.imagename);