短信发送接收装置

接到Boss的命令,要求我们做一个在Android手机上运行的小的例子,实现的功能是:通过一个手机向另外一个手机发送数据,另外一个Android手机接收到后通过USB接口输出!

该装置主要由三个步骤组成:

1、发信息

2、接收信息并读取信息内容

3、从 USB 口输出(这里暂时没实现)

就是为了实现一个短信发送,并接收短信内容输出的装置

MainActivity.java 类实现的是发送信息的功能

 1 package com.example.android_phone;
 2
 3 import java.util.ArrayList;
 4
 5 import android.app.Activity;
 6 import android.os.Bundle;
 7 import android.telephony.SmsManager;
 8 import android.view.Menu;
 9 import android.view.View;
10 import android.view.View.OnClickListener;
11 import android.widget.Button;
12 import android.widget.Toast;
13
14 public class MainActivity extends Activity {
15     private Button mButton;
16     private String mContent;
17     private String mPhoneNumber;
18
19     @Override
20     protected void onCreate(Bundle savedInstanceState) {
21         super.onCreate(savedInstanceState);
22         setContentView(R.layout.activity_main);
23         mButton = (Button) this.findViewById(R.id.button1);
24         mContent = "短信内容";
25         mPhoneNumber = "1833607****";
26         mButton.setOnClickListener(new OnClickListener() {
27             @Override
28             public void onClick(View v) {
29                 // TODO Auto-generated method stub
30                 send(mPhoneNumber,mContent);
31             }
32         });
33     }
34
35     private void send(String phoneNumber, String content){
36         SmsManager smsManager =SmsManager.getDefault();
37         ArrayList<String> texts = smsManager.divideMessage(content);
38         for(String text : texts){
39             smsManager.sendTextMessage(phoneNumber, null, text, null, null);
40         }
41         Toast.makeText(getApplicationContext(), "---发送成功---", Toast.LENGTH_LONG).show();
42     }
43
44 }

SMSBroadcastReceiver.java 类实现对广播的监听,并读取短信的内容

 1 package com.example.android_phone;
 2
 3 import java.text.SimpleDateFormat;
 4 import java.util.Date;
 5
 6 import android.content.BroadcastReceiver;
 7 import android.content.Context;
 8 import android.content.Intent;
 9 import android.os.Bundle;
10 import android.telephony.SmsMessage;
11 import android.widget.Toast;
12
13 public class SMSBroadcastReceiver extends BroadcastReceiver{
14
15     //信息接收广播
16     private static final Object ACTION = "android.provider.Telephony.SMS_RECEIVED";
17     private String sender;
18     private String content;
19     private String sendtime;
20     @Override
21     public void onReceive(Context context, Intent intent) {
22         // TODO Auto-generated method stub
23         if (intent.getAction().equals(ACTION)) {
24             StringBuffer SMSAddress = new StringBuffer();
25             StringBuffer SMSContent = new StringBuffer();
26             Bundle bundle = intent.getExtras();
27             if (bundle != null) {
28                 // 通过pdus获得接收到的所有短信消息,获取短信内容;
29                 Object[] pdusObjects = (Object[]) bundle.get("pdus");
30                 // 构建短信对象数组;
31                 SmsMessage[] messages = new SmsMessage[pdusObjects.length];
32                 for (int i = 0; i < pdusObjects.length; i++) {
33                     // 获取单条短信内容,以pdu格式存,并生成短信对象;
34                     messages[i] = SmsMessage
35                             .createFromPdu((byte[]) pdusObjects[i]);
36                 }
37                 for (SmsMessage message : messages) {
38                     SMSAddress.append(message.getDisplayOriginatingAddress());
39                     SMSContent.append(message.getDisplayMessageBody());
40
41
42                     SMSAddress.append("短信来自:" + message.getDisplayOriginatingAddress()
43                             + "\n");
44                     SMSContent.append("短信内容:" + message.getMessageBody());
45
46                     sender = message.getDisplayOriginatingAddress();// 获取短信的发送者
47                     content = message.getMessageBody();// 获取短信的内容
48                     Date date = new Date(message.getTimestampMillis());
49                     SimpleDateFormat format = new SimpleDateFormat(
50                             "yyyy-MM-dd HH:mm:ss");
51                     sendtime = format.format(date);// 获取短信发送时间;
52                     // SmsManager manager = SmsManager.getDefault();
53                     // manager.sendTextMessage("5556",
54                     // null,"发送人:"+sender+"-----发送时间:"+sendtime+"----内容:"+content,
55                     // null, null);//把拦截到的短信发送到指定的手机,此处为5556;
56                     // if ("5556".equals(sender)){
57                     // //屏蔽手机号为5556的短信,这里还可以时行一些处理,如把该信息发送到第三人的手机等等。
58                     // abortBroadcast();
59                     // }
60                     Toast.makeText(context, "短信内容:"+content, Toast.LENGTH_LONG).show();
61                 }
62
63             }
64         }
65     }
66
67 }

权限设置

 1    <!-- 发送短信 -->
 2     <uses-permission android:name="android.permission.SEND_SMS"/>
 3     <!-- 接收短信 -->
 4     <uses-permission android:name="android.permission.RECEIVE_SMS"/>
 5     <!-- 读取短信内容 -->
 6     <uses-permission android:name="android.permission.READ_SMS"/>
 7     <!-- 收到短信时广播 -->
 8     <uses-permission android:name="android.permission.BROADCAST_SMS"/>
 9     <!-- 编写短信-->
10     <uses-permission android:name="android.permission.WRITE_SMS"/>
11     

广播监听

1     <receiver android:name=".SMSBroadcastReceiver">
2            <intent-filter android:priority="800">
3                <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
4             </intent-filter>
5         </receiver> 

---------------------------------------未完待续---------------------------------------

短信发送接收装置,布布扣,bubuko.com

时间: 2024-08-24 08:50:31

短信发送接收装置的相关文章

Android之发送短信和接收验证码

最近项目需求需要发送短信和接收验证码并将验证码显示在输入框中 以下是我的记录 前提---权限 <uses-permission android:name="android.permission.SEND_SMS"></uses-permission> <uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission> <

android短信的接收和发送处理

一 初始化 手机开机初始化调用GSMPhone 构造函数. GSMPhone (Context context, CommandsInterface ci, PhoneNotifier notifier, boolean unitTestMode) 创建 mSMS = new GsmSMSDispatcher(this); 该类继承于SMSDispatcher.类SMSDispatcher中构造函数中初始化了 短信的消息 mCm.setOnNewSMS(this, EVENT_NEW_SMS,

短信的接收,短信的发送

发送短信的几种方式: 第一种:直接发送一个隐式意图,访问android中自带的发送短消息 //1发送一个隐式意图用模拟器发送短消息  Intent intent = new Intent(Intent.ACTION_SENDTO);  Uri data = Uri.parse("smsto:"+"手机号码"); intent.setData(data);  intent.putExtra("sms_body", "短信内容&quo

快递点短信发送软件

快递点短信发送软件 用户群体:固定快递点,如学校.禁止进入区域.小区集中区.高校网点,不让快递员进入的单位,有固定的店铺.每日快件量都在几百以上.特别是取货时间集中的高校网点,短信通知过后学生都是放学时间来取件,人多,排长队.按照传统方式,最少得三四个人负责取件,而且半天找不到,工作效率低,工作人员一天下来口干舌燥的.如果到了高峰期如双十一,货量之大往往令网点老板崩溃.使用本软件之后,能大大提高作业效率,只要足够货架把货分类好,一个人能管理一千件左右.不但能节约人力成本,而且节省时间,不用顾客等

短信验证码接收平台

一.验证码是什么     所谓的验证码又称校验码.附加码,常祖政和卢晓倩在<计算机安全与维护>期刊中共同就是将一串随机产生的数字或符号,生成一幅图片, 图片里加上一些干扰象素,由用户肉眼识别其中的验证码信息,输入表单提交网站验证,验证成功后才能使用某项功能. 二.短信验证证码接收平台干什么用的     短信验证证码接收平台可以在注册网站账号的时候,如果需要短信验证码的,此时就可以使用短信验证码接收平台的服务. 三.短信验证码接收平台的特点     如今的互联网隐私被人们看的越来越重要,但是大多

阿里大鱼短信发送接口开发

一. API接口介绍 alibaba.aliqin.fc.sms.num.send (短信发送) 向指定手机号码发送模板短信,模板内可设置部分变量.使用前需要在阿里大于管理中心添加短信签名与短信模板.测试时请直接使用正式环境HTTP请求地址. [重要]批量发送(一次传递多个号码eg:1381111111,1382222222)会产生相应的延迟,触达时间要求高的建议单条发送 公共参数 请求地址: 环境 HTTP请求地址 HTTPS请求地址 正式环境 http://gw.api.taobao.com

跟阿根一起学Java Web开发四:邮件发送与短信发送的实现

邮件发送与短信发送常见于用户注册认证以及系统消息提示功能模块,但实现代码过于繁琐:使用JSPGen后,深感其对邮件发送.短信发送的封装让复杂活变得简单很多. 一.基础配置 1.jspgen-config.xml 在框架基础配置文件中,找到mail节点及sms节点,按如下配置: <!-- 邮件服务 --> <mail status="true"> <smtp> <!-- 发送类型(SMTP MX) --> <type>SMTP&

如何使用 ATK-SIM900A 模块进行中英文的短信发送

常见的at指令集 AT+CNMI,用于设置新消息指示.发送:AT+CNMI=2,1,设置新消息提示,当收到新 消息,且 SIM 卡未满的时候,SIM900A 模块会返回数据给串口,如:+CMTI: "SM",2,表 示收到接收到新消息,存储在 SIM 卡的位置 2. AT+CMGF,用于设置短消息模式,SIM900A 支持 PDU 模式和文本(TEXT)模式等 2 种模式,发送:AT+CMGF=1,即可设置为文本模式. AT+CSCS,用于设置 TE 字符集,默认的为 GSM 7 位缺

laravel中实现短信发送验证码

前段时间想实现一个短信验证码的功能,但是卡了很长时间. 首先我用的是阿里云的短信服务业务,其首次接入流程如下: 在阿里云上开通短信服务后需要做的: 1,申请签名  2,申请模板   3,创建Accesskey ,值得说的是,可以通过阿里云提供的子用户进行Accesskey的创建,这样可以更安全  4,充值 laravel有很多的进行短信业务的扩展包,之前我用的是阿里大于,使用如下: 1,从终端或者命令进入您的项,运行:composer require iscms/alisms-for-larav