2010-09-21 54 views
8

Tôi đã tìm thấy một vài hướng dẫn về cách gửi/nhận tin nhắn SMS văn bản, nhưng không có cách nào gửi/nhận tin nhắn SMS dữ liệu. Tôi có một lượng dữ liệu rất nhỏ tôi muốn người dùng ứng dụng của tôi có thể chia sẻ.Cách gửi và nhận tin nhắn SMS dữ liệu

Tôi có thể gửi, nhưng BroadcastReceiver của tôi không bao giờ được gọi. Có vẻ như đây là vấn đề đã biết (http://code.google.com/p/android/issues/detail?id=1576) nhưng có ai đã tìm ra cách thực hiện điều này chưa?

Tôi đã thử gửi/nhận SMS văn bản và hoạt động tốt, điều này là, tôi cần chỉ định cổng để chỉ ứng dụng của tôi mới có thể nghe tin nhắn SMS.


Có vẻ như câu hỏi này đã được hỏi ở đây trước và không bao giờ được trả lời: how to receive text sms to specific port..

+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

Trả lời

23

Tôi biết đây là 1 tuổi tại thời điểm phản ứng của tôi, nhưng tôi nghĩ rằng nó vẫn có thể giúp đỡ một ai đó.
Nhận hồ sơ:

Bundle bundle = intent.getExtras(); 

      String recMsgString = "";    
      String fromAddress = ""; 
      SmsMessage recMsg = null; 
      byte[] data = null; 
      if (bundle != null) 
      { 
       //---retrieve the SMS message received--- 
       Object[] pdus = (Object[]) bundle.get("pdus"); 
       for (int i=0; i<pdus.length; i++){ 
        recMsg = SmsMessage.createFromPdu((byte[])pdus[i]); 

        try { 
         data = recMsg.getUserData(); 
        } catch (Exception e){ 

        } 
        if (data!=null){ 
         for(int index=0; index<data.length; ++index) 
         { 
           recMsgString += Character.toString((char)data[index]); 
         } 
        } 

        fromAddress = recMsg.getOriginatingAddress(); 
       } 

Thiết lập Receiver trong Manifest:

<receiver android:name=".SMSReceiver"> 
     <intent-filter> 
     <action android:name="android.intent.action.DATA_SMS_RECEIVED" /> 
      <data android:scheme="sms" /> 
      <data android:port="8901" /> 
     </intent-filter> 
</receiver> 

gửi:

String messageText = "message!"; 
short SMS_PORT = 8901; //you can use a different port if you'd like. I believe it just has to be an int value. 
SmsManager smsManager = SmsManager.getDefault(); 
smsManager.sendDataMessage("8675309", null, SMS_PORT, messageText.getBytes(), null, null); 
+0

Dude thật tuyệt vời, cảm ơn. –

+1

Tôi rất vui vì tôi có thể giúp đỡ. Không có gì. – Jakar

+1

+1 cho tài liệu tham khảo Tommy Tutone –

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