2012-02-29 10 views
14

私は別のコードSO postに似ています。しかし、すべてのMMSの私のMIMEタイプは "application/smil"です。 MMSに画像、音声、テキストなどが含まれているかどうかを確認するにはどうすればよいですか? 「Android:application/smilで何をするかMIMEタイプ

[56, 98, -1, application/smil, smil.xml, null, null, null, <0000>, smil.xml, null, null, null, <smil> 
<smil> 
    <head> 
    <layout> 
     <root-layout height="480px" width="320px"/> 
     <region fit="meet" height="160px" id="Text" left="0" top="320" width="320px"/> 
    </layout> 
    </head> 
    <body> 
    <par dur="11000ms"> 
     <audio dur="11000ms" src="cid:171"/> 
     <text region="Text" src="cid:172"/> 
    </par> 
    </body> 
</smil> 
] 
+0

私はこれと似たようなことをしています! http://stackoverflow.com/questions/11556633/parse-application-smil-mms-mime-type-on-android – toobsco42

+0

MMSメッセージの画像とテキストにhttp:// stackoverflowでアクセスする方法の優れた説明があります。 com/questions/3012287/how-to-read-mms-data-in-androidにあります。 –

答えて

14

問題はあなたのことです:

 String selectionPart = "mid =" + id; 
     Uri ur = Uri.parse("content://mms/part"); 
     Cursor cur = getContentResolver().query(ur, null, selectionPart, null, null); 
     if (cur.moveToFirst()) { 
      do { 
       String[] values = new String[cur.getColumnCount()]; 

       for (int i = 0; i < cur.getColumnCount(); i++) { 
        values[i] = cur.getString(i); 
       } 

       String partId = cur.getString(cur.getColumnIndex("_id")); 
       String type = cur.getString(cur.getColumnIndex("ct")); 

これは、オーディオMMSの値のString []内に含まれているものである:ここでは

は私が現時点で使用していたコードですカーソルには1つのエントリしかないと仮定しています。それは実際にはありません。

MMSメッセージの場合、同じmidに対応する3つ(またはそれ以上)のエントリがあります。以下に説明します。

  1. 1つのエントリはSMILファイルに対応します。 SMILは、MMSを表示する方法をMMSビューアが知るのを助けるxmlを含むファイル形式です(これは上記のとおりです)。 ct(コンテンツタイプの略語)の列を見た場合、このエントリのMIMEタイプはapplication/smilです

  2. 別のエントリは、添付ファイル以外のMMS内のテキストを含むテキストファイルに対応します。これのMIMEタイプはtext/plain

  3. です。最後に、実際に添付ファイルがある別のエントリが見つかります。この添付ファイルは、ファイルの内容に応じてさまざまなMIMEタイプを持つことができます。それはJPEGであることを起こる場合は、それはそうimage/pngなど...(あなたがポイントを得る)

なりますPNG、問題はあなたがカーソルが1行を持っていると仮定したということであった場合には、image/jpegになります戻ってきた。あなたが探しているものが見つかるでしょう。

通常は、_dataカラムを空でない値にフィルタリングして、すぐに添付ファイルの行に移動します。 (_dataの列には、電話機に添付ファイルが保存されているuriパスが含まれています。この行は、MMS添付ファイルに対応しない他のすべての行についてはnullとなるため、midに一致する行を検索する必要があります。 _data column value is not null)その行が見つかると、その行のct列を読んでその行のMIMEタイプを見つけることができます。それはどのタイプのファイルがMMSメッセージで転送されているかを教えてくれますまたはaudio/abcまたはvideo/qweなど...

+0

非常にうまく説明されています。 –

関連する問題