您好我正在寻找设置位于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
图标?
答案 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);