如何发送和接收数据SMS消息

我发现了一些关于如何发送/接收文本短信的教程,但没有关于如何发送/接收数据短信的教程。 我有一个非常less量的数据,我希望我的应用程序的用户能够分享。

我能够发送,但我的BroadcastReceiver不会被叫。 看来这是一个已知的问题( http://code.google.com/p/android/issues/detail?id=1576 ),但有谁知道如何做到这一点呢?

我试着发送/接收短信,而且工作正常,事情是,我需要指定一个端口,所以只有我的应用程序可以听短信​​。


看来这个问题已经在这里被问到,从来没有回答: 如何接收文本短信到特定的端口..

我知道在我回应的时候这是1岁,但我认为它仍然可以帮助别人。
接收:

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

在清单中设置Receiver:

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

发送:

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