编程语言
首页 > 编程语言> > 在Android上解析应用程序/ smil MMS MIME类型

在Android上解析应用程序/ smil MMS MIME类型

作者:互联网

所以我遇到了三类MMS消息类型:

纯文本 – “text / plain”

图像 – “image / jpeg”,“image / bmp”,“image / gif”,“image / jpg”,“image / png”

SMIL(同步多媒体集成语言) – “application / smil”

因此,抓住前两个类别的MMS中的数据我没有问题.但是我无法从消息类型application / smil的MMS中获取数据

下面我列出了我从手机中提取的5个不同的应用程序/ smil MMS消息示例.

[31, 22, -1, application/smil, 123_1.smil, 106, null, null, <0000>, 0.smil, null, null, null, <smil>
  <head>
    <layout>
      <root-layout height="160" width="240"/>
      <region fit="meet" height="67%" id="Image" left="0%" top="0%" width="100%"/>
      <region fit="meet" height="33%" id="Text" left="0%" top="67%" width="100%"/>
    </layout>
  </head>
  <body>
    <par dur="8000ms">
      <img region="Image" src="cid:992"/>
    </par>
    <par dur="8000ms">
      <img region="Image" src="cid:993"/>
    </par>
  </body>
</smil>]

.

[22, 14, -1, application/smil, null, null, null, null, <smil>, smil.xml, null, null, null, <smil>
  <head>
    <layout>
      <root-layout width="320px" height="480px"/>
      <region id="Image" left="0" top="0" width="320px" height="320px" fit="meet"/>
      <region id="Text" left="0" top="320" width="320px" height="160px" fit="meet"/>
    </layout>
  </head>
  <body>
    <par dur="5000ms">
      <img src="8555" region="Image"/>
      <text src="text_0.txt" region="Text"/>
    </par>
  </body>
</smil>]

.

[13, 11, -1, application/smil, 123_1.smil, null, null, null, <0000>, null, null, null, null, <smil> 
  <head> 
    <layout> 
      <root-layout/>  
      <region fit="scroll" height="30%" id="Text" left="0%" top="70%" width="100%"/>  
      <region fit="meet" height="70%" id="Image" left="0%" top="0%" width="100%"/> 
    </layout> 
  </head>  
  <body> 
    <par dur="10000ms"> 
      <text region="Text" src="cid:928"/> 
    </par> 
  </body> 
</smil>]

.

[16, 13, -1, application/smil, mms.smil, null, null, null, <AAAA>, AAAA, null, null, null, <smil>
    <head>
        <layout>
            <root-layout width="240" height="160"/>
            <region id="Image" width="100%" height="67%" left="0%" top="0%" fit="meet"/>
            <region id="Text" width="100%" height="33%" left="0%" top="67%" fit="meet"/>
        </layout>
    </head>
    <body>
    <par dur="8000ms"><text src="text__01.txt" region="Text"/></par></body>
</smil>]

.

[5, 5, -1, application/smil, smil.smil, 106, null, null, <0000>, smil, null, null, null, <smil>
  <head>
    <layout>
      <root-layout height="160" width="240"/>
      <region fit="meet" height="67%" id="Image" left="0%" top="0%" width="100%"/>
      <region fit="meet" height="33%" id="Text" left="0%" top="67%" width="100%"/>
    </layout>
  </head>
  <body>
    <par dur="8000ms">
      <img region="Image" src="cid:351"/>
      <text region="Text" src="cid:352"/>
    </par>
  </body>
</smil>]

你究竟如何解析这种类型的彩信?其他短信应用如何处理不同类型的彩信?任何帮助将不胜感激.

解决方法:

所以问题是我正在创建一个这样的Cursor

Uri uri = Uri.parse("content://mms/part");
String[] projection = new String[] { "*" };
String selection = "_id = " + messageId;
Cursor cursor = mContentResolver.query(uri, projection, selection,null, null);

问题是选择arg应该是真的

String selection = "mid = " + messageId;

现在我的光标包含多个条目:

>一个条目将对应于SMIL文件. SMIL是一种包含xml的文件格式,可帮助MMS查看器了解如何显示MMS.如果你看一下名为ct的列(内容类型的首字母缩写词),这个条目的MIME类型是application / smil
>另一个条目将对应于除了附件之外还包含该MMS内任何文本的文本文件.它的MIME类型是text / plain
>最后,您会发现另一个实际上具有附件的条目.此附件可以具有各种不同的MIME类型,具体取决于文件的内容.如果它恰好是一个jpeg它将是image / jpeg,如果png它将是image / png等…

我要感谢@wnafee在这篇文章Android: what to do with application/smil MIME type中指出这一点.

标签:android,sms,mime-types,mms
来源: https://codeday.me/bug/20190926/1822141.html