解析收到的图像和文字彩信

时间:2017-04-16 20:06:42

标签: android mms smsmanager android-mms

我正在为Android开发一个SMS-MMS库应用程序。其目的是纠正Android中存在的一些漏洞,以及创建一个安全的"某些联系人之间的通信空间(加密的短信和彩信)。

我已经实现了所有预期的功能,但接收MMS的功能除外。我没有找到关于此事的文件。我一直在阅读其他实现此功能的应用程序中的大量代码,所有这些代码都等待股票应用程序接收MMS然后检索它,这不是我想要的,因为我的应用程序意味着是默认的。

所以,请问我的问题:

收到MMS意图后,如何解析图像和文本?

1 个答案:

答案 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,只是公平警告。

至于接收彩信,你可以随时使用观察者并在观察者说有变化时加载添加的消息......或者如果你想让它成为默认信使,可以使用广播接收器。