我发现了一些关于如何发送/接收文本SMS消息的教程,但没有关于如何发送/接收数据SMS消息的教程.我希望我的应用程序的用户能够共享的数据非常少.
我能够发送,但我BroadcastReceiver永远不会被打电话.这似乎是一个已知的问题(http://code.google.com/p/android/issues/detail?id=1576),但有没有人想出如何做到这一点?
我尝试发送/接收文本短信,工作正常,事情是,我需要指定一个端口,所以只有我的应用程序可以收听短信.
看来这个问题之前已经在这里提出过,并且从未得到过回答:如何接收文本短信到特定端口..
Ree*_*eed 26
我知道这是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();
}
Run Code Online (Sandbox Code Playgroud)
在Manifest中设置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>
Run Code Online (Sandbox Code Playgroud)
发送:
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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18669 次 |
| 最近记录: |