【发布时间】:2020-11-10 08:06:05
【问题描述】:
场景:我在聊天应用程序中使用 MessagingStyle 通知。对于图片消息,我使用 setData 函数来创建对话风格的图片通知。
public Message setData(String dataMimeType, Uri dataUri)
此方法需要 dataUri 但我有图像的 URL,所以我从图像 url 创建了一个位图,然后使用下面的函数从 batmap 创建一个 uri。
public static Uri getImageUri(Context applicationContext, Bitmap photo) {
try {
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
photo.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
String path = MediaStore.Images.Media.insertImage(applicationContext.getContentResolver(), photo, "IMG_" + Calendar.getInstance().getTime(), null);
if (path == null) {
return null;
}
return Uri.parse(path);
} catch (SecurityException ex) {
ex.printStackTrace();
return null;
}
}
问题:现在的问题是,当用户打开图片库时,这些通知图片会显示,因为我使用了 mediastore 创建 URI。我不希望这些图片显示在图库中。
限制:如果我必须再次生成此通知,我也会保存该 URI。所以我不能立即删除那张图片以避免在图库中显示。
问题:有没有办法将图像私下保存在画廊无法访问的外部存储中。但是通知管理器可以访问吗?
有什么方法可以创建 Uri 表单 url 而无需下载它?我已经尝试过了,但它也不起作用
url = new URL(messageNotification.getAttachmentImage());
URI uri = new URI(url.getProtocol(), url.getUserInfo(), url.getHost(), url.getPort(), url.getPath(), url.getQuery(), url.getRef());
imageUri= Uri.parse(uri.toString());
另一种解决方法是在通知中显示图像,使用消息样式(如 WhatsApp 中的对话)
【问题讨论】:
标签: android android-notifications