So I have come across three categories of MMS message types:
Plain Text - \"text/plain\"
Image - \"image/jpeg\", \"image/bmp\", \"ima
w3 has a nice library for working with SMIL. Check it out here http://www.w3.org/TR/1999/WD-smil-boston-dom-19991115/java-binding.html
So the issue was that I was creating a Cursor
like this
Uri uri = Uri.parse("content://mms/part");
String[] projection = new String[] { "*" };
String selection = "_id = " + messageId;
Cursor cursor = mContentResolver.query(uri, projection, selection,null, null);
The problem is the selection arg should really be
String selection = "mid = " + messageId;
Now my cursor contains multiple entries:
One entry will correspond to the SMIL file. SMIL is a file format containing xml that helps an MMS viewer to know how to display the MMS. The MIME type for this entry is application/smil if you look at the column called ct (acronym for content type)
Another entry will correspond to the text file that contains any text within that MMS besides the attachment. The MIME type of this will be text/plain
Lastly, you will find another entry that actually has the attachment. This attachment can have a variety of different MIME types depending on what the file is. If it happens to be a jpeg it will be image/jpeg, if png it will be image/png etc...
I want to thank @wnafee for pointing this out in this post Android: what to do with application/smil MIME type .
You can start here It's android MMS viewer. Support SMIL. I use this code for my current project SMIL player for android.