2012-02-29 7 views
14

के साथ क्या करना है मैं अन्य SO post के समान कोड का उपयोग कर रहा हूं। लेकिन हर एमएमएस के लिए मेरा एमआईएमई प्रकार "एप्लिकेशन/स्माइल" है। मैं कैसे निर्धारित करूं कि एमएमएस में एक तस्वीर, ऑडियो, टेक्स्ट इत्यादि है या नहीं?एंड्रॉइड: एप्लिकेशन/स्माइल एमआईएम प्रकार

यहाँ कोड मैं इस समय का उपयोग कर रहा है:

 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")); 

यह वही है एक ऑडियो एमएमएस के लिए मूल्यों String [] में निहित है है:

[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-plication-smil-mms-mime-type-on-android – toobsco42

+0

http: // stackoverflow पर एमएमएस संदेशों में छवियों और टेक्स्ट तक पहुंचने का एक उत्कृष्ट विवरण है। com/प्रश्न/3012287/कैसे-टू-रीड-एमएमएस-डेटा-इन-एंड्रॉयड। –

उत्तर

14

समस्या यह है कि आप है ' यह मानते हुए कि आपके कर्सर में केवल 1 प्रविष्टि है। यह वास्तव में नहीं करता है।

एमएमएस संदेशों के लिए, आप पाएंगे कि mid से संबंधित 3 (या अधिक) प्रविष्टियां हैं। उन्हें नीचे वर्णित किया गया है:

  1. एक प्रविष्टि SMIL फ़ाइल के अनुरूप होगी। एसएमआईएल एक फ़ाइल प्रारूप है जिसमें एक्सएमएल है जो एमएमएस दर्शक को एमएमएस को प्रदर्शित करने के तरीके को जानने में मदद करता है (यह वही है जो आपने ऊपर मुद्रित किया है)। इस प्रविष्टि के लिए MIME प्रकार application/smil यदि आप स्तंभ ct (सामग्री प्रकार के लिए परिवर्णी शब्द) कहा जाता

  2. एक और प्रविष्टि है कि एमएमएस लगाव के अलावा के भीतर किसी भी पाठ शामिल पाठ फ़ाइल के अनुरूप होगा पर देखने के है। इसका एमआईएमई प्रकार text/plain

  3. अंत में, आपको एक और प्रविष्टि मिल जाएगी जो वास्तव में अनुलग्नक है। फ़ाइल के आधार पर इस अनुलग्नक में विभिन्न प्रकार के एमआईएम प्रकार हो सकते हैं। यह अगर PNG, एक jpeg यह image/jpeg हो जाएगा होने वाला यदि यह image/png आदि हो जाएगा ... (आप समझ गए)

तो, समस्या आप यह सोचते हैं कर रहे थे कि कर्सर 1 पंक्ति है था लौटा हुआ। यदि आप 3 पंक्तियों के माध्यम से पुन: प्रयास करते हैं तो आप जो भी खोज रहे हैं उसे

आमतौर पर, मैं _data कॉलम को गैर-खाली मान के लिए तुरंत अनुलग्नक पंक्ति तक पहुंचने के लिए फ़िल्टर करता हूं। (_data कॉलम में यूरी पथ होगा जहां अटैचमेंट फोन पर सहेजा गया है। वह पंक्ति null होगी जो अन्य सभी पंक्तियों के लिए है जो एमएमएस अटैचमेंट के अनुरूप नहीं हैं। इसलिए आपको अपनी mid से मेल खाने वाली पंक्ति की खोज करनी होगी _data column value is not null) जब आपको वह पंक्ति मिलती है, तो आप उस पंक्ति के MIME प्रकार को खोजने के लिए उस पंक्ति के ct कॉलम को पढ़ सकते हैं। यह आपको बताएगा कि एमएमएस संदेश में किस प्रकार की फाइल स्थानांतरित की जा रही है, यह image/xyz या audio/abc या video/qwe आदि ...

+0

यह बहुत अच्छी तरह से समझाया गया है। –

संबंधित मुद्दे