2012-03-29 5 views
14

में मेरे आवेदन से एमएमएस भेजें मैं अपने आवेदन से एमएमएस को एक विशिष्ट नंबर पर भेजना चाहता हूं। मैंने इस कोड को खोजा और पाया है, लेकिन मुझे नहीं पता कि यह कोड मुझे क्या चाहिए या नहीं। मेरा प्रश्न है:एंड्रॉइड

- क्या कोई मुझे इस कोड को समझा सकता है। मैं एमएमएस में शुरुआत कर रहा हूं।

-इसलिए, मैंने सोचा कि यह कोड उपयोगकर्ता को एमएसएस को मेरे आवेदन से मूल मैसेजिंग इनबॉक्स में ले जाने के बिना भेजने देता है (और यही वह है जो मैं चाहता हूं) क्या मैं सही हूँ?

- मुझे भी कोई समस्या है, मुझे नहीं पता कि मैं इस परियोजना को अपने प्रोजेक्ट में कैसे रख सकता हूं।

इस मुझे क्या मिला

एमएमएस सिर्फ एक http पोस्ट अनुरोध है। आप अनुरोध अतिरिक्त नेटवर्क सुविधा का उपयोग कर प्रदर्शन करना चाहिए:

final ConnectivityManager connMgr = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); 
final int result = connMgr.startUsingNetworkFeature(ConnectivityManager.TYPE_MOBILE, Phone.FEATURE_ENABLE_MMS); 

यदि आप Phone.APN_REQUEST_STARTED मूल्य के साथ परिणाम वापस पाने के लिए, आप उचित राज्य के लिए इंतजार करना पड़ता है। रजिस्टर BroadCastReciver और Phone.APN_ALREADY_ACTIVE प्रकट होता है जब तक इंतजार:

final IntentFilter filter = new IntentFilter(); 
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); 
context.registerReceiver(reciver, filter); 

तो पृष्ठभूमि कनेक्शन के लिए तैयार है, तो सामग्री का निर्माण और अनुरोध करते हैं। से पोर्ट: आप एंड्रॉयड के आंतरिक कोड का उपयोग कर कि क्या करना चाहते हैं, तो इस का उपयोग करें:

final SendReq sendRequest = new SendReq(); 
final EncodedStringValue[] sub = EncodedStringValue.extract(subject); 
if (sub != null && sub.length > 0) { 
    sendRequest.setSubject(sub[0]); 
} 
final EncodedStringValue[] phoneNumbers = EncodedStringValue.extract(recipient); 
if (phoneNumbers != null && phoneNumbers.length > 0) { 
    sendRequest.addTo(phoneNumbers[0]); 
} 

final PduBody pduBody = new PduBody(); 

if (parts != null) { 
    for (MMSPart part : parts) { 
     final PduPart partPdu = new PduPart(); 
     partPdu.setName(part.Name.getBytes()); 
     partPdu.setContentType(part.MimeType.getBytes()); 
     partPdu.setData(part.Data); 
     pduBody.addPart(partPdu); 
    } 
} 

sendRequest.setBody(pduBody); 

final PduComposer composer = new PduComposer(this.context, sendRequest); 
final byte[] bytesToSend = composer.make(); 

HttpUtils.httpConnection(context, 4444L, MMSCenterUrl, bytesToSendFromPDU, HttpUtils.HTTP_POST_METHOD, !TextUtils.isEmpty(MMSProxy), MMSProxy, port); 
  • MMSCenterUrl: एमएमएस-APN के से यूआरएल,
  • MMSProxy: एमएमएस-APN के से प्रॉक्सी,
  • बंदरगाह एमएमएस-एपीएन

ध्यान दें कि कुछ वर्ग आंतरिक पैकेज से हैं। एंड्रॉइड गिट से डाउनलोड की आवश्यकता है। अनुरोध उपयोगकर्ता के APN अंतरिक्ष कोड से यूआरएल से किया जाना चाहिए:

public class APNHelper { 

    public class APN { 
     public String MMSCenterUrl = ""; 
     public String MMSPort = ""; 
     public String MMSProxy = ""; 
    } 

    public APNHelper(final Context context) { 
     this.context = context; 
    } 

    public List<APN> getMMSApns() {  
     final Cursor apnCursor = this.context.getContentResolver().query(Uri.withAppendedPath(Telephony.Carriers.CONTENT_URI, "current"), null, null, null, null); 
     if (apnCursor == null) { 
     return Collections.EMPTY_LIST; 
     } else { 
     final List<APN> results = new ArrayList<APN>();   
     while (apnCursor.moveToNext()) { 
      final String type = apnCursor.getString(apnCursor.getColumnIndex(Telephony.Carriers.TYPE)); 
      if (!TextUtils.isEmpty(type) && (type.equalsIgnoreCase(Phone.APN_TYPE_ALL) || type.equalsIgnoreCase(Phone.APN_TYPE_MMS))) { 
       final String mmsc = apnCursor.getString(apnCursor.getColumnIndex(Telephony.Carriers.MMSC)); 
       final String mmsProxy = apnCursor.getString(apnCursor.getColumnIndex(Telephony.Carriers.MMSPROXY)); 
       final String port = apnCursor.getString(apnCursor.getColumnIndex(Telephony.Carriers.MMSPORT));     
       final APN apn = new APN(); 
       apn.MMSCenterUrl = mmsc; 
       apn.MMSProxy = mmsProxy; 
       apn.MMSPort = port; 
       results.add(apn); 
      } 
     }     
     apnCursor.close(); 
     return results; 
     } 

कृपया मेरी मदद करो

+0

मैं इसी तरह यहाँ कुछ कर रहा हूँ !!! http://stackoverflow.com/questions/14452808/sending-and-receiving-mms-in-android – toobsco42

+0

Pleae यहां मेरे उत्तर का संदर्भ लें http://stackoverflow.com/a/20611335/2422453 – Defuera

+0

कोई जवाब नहीं चिल्लाता एक जवाब :/ –

उत्तर

0

कारण है कि आप एंड्रॉयड सिस्टम फ़ंक्शन का उपयोग नहीं करते:

कृपया एक नजर है पर

https://developer.android.com/guide/components/intents-common.html

public void composeMmsMessage(String message, Uri attachment) { 
     Intent intent = new Intent(Intent.ACTION_SEND); 
     intent.setData(Uri.parse("smsto:")); // This ensures only SMS apps respond 
     intent.putExtra("sms_body", message); 
     intent.putExtra(Intent.EXTRA_STREAM, attachment); 
     if (intent.resolveActivity(getPackageManager()) != null) { 
      startActivity(intent); } 
} 

चीयर्स

टॉम