基于地图的短信追踪小练习(3)短信的接收与发送
来源:互联网 发布:苹果网络不可用 编辑:程序博客网 时间:2024/05/20 03:05
注:本篇文章中代码关于短信收发部分部分参考自《第一行代码》
我们要实现的功能是,点击一个按钮,向朋友发送短信,内容为"where are you?",朋友收到之后,发还一个经纬度信息,这里面的逻辑很好想,设置好要发送的信息之后发送,接收到之后判断,再获取到想要的信息,根据获取到的发送方,发送经纬度给它。
所以关键还是发送和接受本身的实现逻辑。
注意,接收短信可以在模拟器中,我们可以用ddms来发送短信,但是发送短信就必须在真机中了。
我们设置点击事件,发送短信,发送短信的逻辑其实就两行代码
botton2 = (Button)findViewById(R.id.refresh); botton2.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View view){SmsManager smsManager = SmsManager.getDefault(); //发送短信的逻辑smsManager.sendTextMessage(friends,null,"where are you?",null,null);} });
注意sendTextMessage的第一个参数是手机号,第三个参数是短信内容。
我们设置接收短信的逻辑是要定义类继承BroadcastReceiver,它能在广播接收器里监听系统的广播,当收到短信的时候会执行。
class MessageReceiver extends BroadcastReceiver{@Overridepublic void onReceive(Context context, Intent intent) // onReceive(){Bundle bundle = intent.getExtras();Object[] pdus = (Object[])bundle.get("pdus");SmsMessage[] messages = new SmsMessage[pdus.length];for(int i = 0; i<messages.length; i++){messages[i] = SmsMessage.createFromPdu((byte[])pdus[i]);}String address = messages[0].getOriginatingAddress();String fullMessage = " ";for(SmsMessage message : messages){fullMessage += message.getMessageBody();} //收取处理短信字符串 -> address fullmessage//Toast.makeText(getApplicationContext(), address, Toast.LENGTH_SHORT).show();//Toast.makeText(getApplicationContext(), fullMessage, Toast.LENGTH_SHORT).show();//Toast.makeText(getApplicationContext(),address.substring(3, address.length()), Toast.LENGTH_SHORT).show();//System.out.println(address);//System.out.println(fullMessage);//System.out.println(address.substring(3, address.length()-1));if(fullMessage.trim().equals("where are you?")){//Toast.makeText(getApplicationContext(),address.substring(3, address.length()), Toast.LENGTH_SHORT).show();SmsManager smsManager = SmsManager.getDefault(); //address.substring(3)smsManager.sendTextMessage(address.substring(3, address.length()),null,String.valueOf(location.getLatitude())+"/"+String.valueOf(location.getLongitude()),null,null);}}} MessageReceiver messageReceiver = new MessageReceiver(); registerReceiver(messageReceiver, receiveFilter);
我们用bundle接收到短信,转化为smsmessage对象,再进行处理,获取到发送方号码和短信内容(address和content)
再判断,如果收到的是where are you?那么就发还经纬度给发送方。
发送方有+86所以用substring处理了一下。
经纬度的获取并转为string:
String.valueOf(location.getLatitude())+"/"+String.valueOf(location.getLongitude()
遇到问题:
if(fullMessage.trim().equals("where are you?"))
不执行,但是toast出来的字符串又是相等的。
最后用system输出,在Logcat中观察到其实是有空格的,用trim处理了一下,成功完成功能。
0 0
- 基于地图的短信追踪小练习(3)短信的接收与发送
- 基于地图的短信追踪小练习(7)经纬度的设置与显示
- 基于地图的短信追踪小练习(8)地图覆盖物点击事件与活动间数据的传递
- 基于地图的短信追踪小练习(1)百度地图的初创建
- 基于地图的短信追踪小练习(2)百度地图定位到自己的位置
- 基于地图的短信追踪小练习(4)主界面布局的一些内容
- 基于地图的短信追踪小练习(5)对话框之item的添加
- 基于地图的短信追踪小练习(6)对话框之item的删除
- 短信猫的发送与接收
- Android短信的发送与接收
- android中短信的发送与接收
- 短信的接收,短信的发送
- Android中短信的收发机制 发送短信 接收短信 拦截短信 监听短信
- PDU格式中文短信的发送与接收
- 短信猫接收与发送短信整理
- 短信猫接收与发送短信整理
- 接收短信(利用广播)发送短信(检测发送成功的状态需要利用广播)
- Android发送接收短信的代码示例
- VS无法打开项目文件“Web.csproj” -此安装不支持该项目类型问题解决方案
- bzoj 3969 WF2013 Low Power [贪心] [二分答案]
- Java String类、StringBuffer和StringBuilder类
- spring前端控制器映射路径
- 你是不是得了拖延症?
- 基于地图的短信追踪小练习(3)短信的接收与发送
- php中删除和判断变量
- MD5加解密
- 打不死的redis集群
- KVO使用
- iOS开发Debug之图片抗锯齿
- 颜色代码
- 字符串的其它写法
- char和byte的区别