我想通过Android中的SMS消息发送一些数据(非多媒体).能做到吗?我只想以XML或其他形式从一部电话向另一部电话发送少量数据.
解决方法:
正确的方法是使用SmsManager类中的sendDataMessage.
这是一个小代码(SMSSender):
SmsManager smsMgr = SmsManager.getDefault();smsMgr.sendDataMessage(phoneNumber, null, (short) myApplicationPort, messageString.getBytes(), sentIntent, deliveryIntent);
这是另一个小代码(SMSReceiver):
Bundle bundle = intent.getExtras(); if (bundle != null) { Object[] pdusObj = (Object[]) bundle.get("pdus"); SmsMessage[] messages = new SmsMessage[pdusObj.length]; // getting SMS information from PDU for (int i = 0; i < pdusObj.length; i++) { messages[i] = SmsMessage.createFromPdu((byte[]) pdusObj[i]); } for (SmsMessage currentMessage : messages) { if (!currentMessage.isstatusReportMessage()) { String messageBody = currentMessage.getdisplayMessageBody(); byte[] messageByteArray = currentMessage.getPdu(); // skipPing PDU header, keePing only message body int x = 1 + messageByteArray[0] + 19 + 7;// I'm not sure about this last line, as I'm not converting the bytes back to string, so test it out String realMessage = new String(messageByteArray, x, messageByteArray.length-x);
这是您应该添加到AndroIDManifest.xml中的内容:
<receiver androID:name=".SMSReceiver"> <intent-filter> <action androID:name="androID.intent.action.DATA_SMS_RECEIVED" /> <data androID:scheme="sms" /> <data androID:host="localhost" /> <data androID:port="12345" /><!-- this number should be the same as the `myApplicationPort` from above!!! --> </intent-filter> </receiver>
总结 以上是内存溢出为你收集整理的Android:如何通过短信发送和接收数据全部内容,希望文章能够帮你解决Android:如何通过短信发送和接收数据所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)