2012-03-29 35 views
14

Tôi muốn gửi MMS từ ứng dụng của mình đến một số cụ thể. Tôi đã tìm kiếm và tìm thấy mã này nhưng tôi không có ý tưởng nếu mã này những gì tôi cần hay không. Câu hỏi của tôi là:Gửi MMS từ Ứng dụng của tôi trong android

-can mọi người có thể giải thích mã này cho tôi. Tôi là người mới bắt đầu bằng MMS.

-ngoài ra, tôi nghĩ mã này cho phép người dùng gửi MMS từ ứng dụng của tôi mà không cần di chuyển đến hộp thư đến của Nhắn tin gốc (và đây là những gì tôi muốn) Tôi có đúng không?

-cũng tôi có vấn đề, tôi không biết làm cách nào tôi có thể đặt mã này trong dự án của mình.

đây là những gì tôi đã tìm thấy

MMS chỉ là yêu cầu http yêu cầu. Bạn nên thực hiện theo yêu cầu sử dụng tính năng mạng bổ sung:

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

Nếu bạn nhận lại kết quả với giá trị Phone.APN_REQUEST_STARTED, bạn phải đợi cho nhà nước thích hợp. Đăng ký BroadCastReciver và đợi cho đến khi Phone.APN_ALREADY_ACTIVE xuất hiện:

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

Nếu kết nối nền đã sẵn sàng, sau đó xây dựng nội dung và thực hiện yêu cầu. Nếu bạn muốn làm điều đó sử dụng mã nội android, xin vui lòng sử dụng này:

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: url từ MMS-APN,
  • MMSProxy: proxy từ MMS-APN,
  • cổng: cổng từ MMS-APNs

Lưu ý rằng một số lớp là từ gói nội bộ. Tải xuống từ git Android là bắt buộc. Yêu cầu nên được thực hiện với url từ mã APN-không gian của người dùng:

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; 
     } 

Xin hãy giúp tôi

+0

Tôi đang làm một cái gì đó tương tự ĐÂY !!! http://stackoverflow.com/questions/14452808/sending-and-receiving-mms-in-android – toobsco42

+0

Xin tham khảo câu trả lời của tôi tại đây http://stackoverflow.com/a/20611335/2422453 – Defuera

+0

Không có câu trả lời nào một câu trả lời :/ –

Trả lời

0

tại sao bạn không sử dụng các chức năng hệ thống android:

hãy có một cái nhìn trên

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

Cheers

Tom

Các vấn đề liên quan