如何发送和接收数据短信消息

10

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

我可以发送短信,但是我的BroadcastReceiver从未被调用。这似乎是一个已知的问题(http://code.google.com/p/android/issues/detail?id=1576),但是否有人已经解决了这个问题呢?

我尝试发送/接收文本短信,那很好用,但问题是,我需要指定一个端口,这样只有我的应用程序才能侦听短信。


看起来这个问题在这里之前已经被问过了,但从未得到答复:如何接收特定端口的文本短信。


我正在这里做类似的事情!!! https://dev59.com/j-o6XIcBkEYKwwoYORwV - Etienne Lawlor
1个回答

28

我知道这条问题已经有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 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); 

1
我可以在这些短信中包含图片吗? - learner
@learner,不可以。这与短信发送方式相同,无法包含图片。 - Reed
@Jakar,你是怎么解决这个问题的? - iceman
@iceman,我不确定是几年前的事了,但我相信当时我在搜索“如何隐藏短信”或类似的东西时,在网上找到了一篇文章。 - Reed
1
还有一个非常好的教程,它提供了关于数据短信(也称为二进制短信)的优秀信息,请查看:http://codetheory.in/android-sms/ - user3856210
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接