我正在为Android开发一个SMS-MMS库应用程序。其目的是纠正Android中存在的一些漏洞,以及创建一个安全的"某些联系人之间的通信空间(加密的短信和彩信)。
我已经实现了所有预期的功能,但接收MMS的功能除外。我没有找到关于此事的文件。我一直在阅读其他实现此功能的应用程序中的大量代码,所有这些代码都等待股票应用程序接收MMS然后检索它,这不是我想要的,因为我的应用程序意味着是默认的。
所以,请问我的问题:
收到MMS意图后,如何解析图像和文本?
答案 0 :(得分:0)
所以你可以做的就是获取照片,我会获得彩信的ID并通过("内容:// mms / part") 做一个类型检查:
String type = cursor.getString(cursor.getColumnIndex("ct"));
String partId = cursor.getString(cursor.getColumnIndex("_id"));
//is type a picture
if ("image/jpeg".equals(type) || "image/bmp".equals(type)
|| "image/gif".equals(type) || "image/jpg".equals(type)
|| "image/png".equals(type)) {
getMmsImage(partId); // load in your picture
}
现在您拥有了解图片位置的部件ID,以便您可以使用您想要的任何内容加载它,例如,如果您只想将其作为位图,则可以执行此操作:
public Bitmap getMmsImage(String _id, Context context) {
Uri partURI = Uri.parse("content://mms/part/" + _id);
InputStream is = null;
Bitmap bitmap = null;
try {
is = context.getContentResolver().openInputStream(partURI);
bitmap = BitmapFactory.decodeStream(is);
} catch (Exception e) {// probably should do an ioException around here}
finally {
if (is != null) {
try {
is.close();
} catch (IOException e) {}
}
}
return bitmap;
}
现在我想指出的是,如果你想要GIF动画这不起作用,它会加载GIF,但它们仍然是图像。如果你想要它们动画,你可以使用类似Glide的东西,并为它提供uri的路径位置。 Glide需要一段时间才能加载GIF,只是公平警告。
至于接收彩信,你可以随时使用观察者并在观察者说有变化时加载添加的消息......或者如果你想让它成为默认信使,可以使用广播接收器。