前言:因公司业务需要,需要一台手机专门回复客户订购的套餐的短信,之前一直是人工手动回复,但比较麻烦且回复可能不及时,于是项目经理就让实现根据短信的关键字自动回复功能。
实现手机短信监听的方式有两种:一是通过ContentObserver观察者实现监听,另一种就是通过广播即BroadcastReceiver实现短信监听,文章中通过使用BroadcastReceiver实现有新短信的及时监听及包含设定的关键字时自动回复.
效果图:
清单文件添加权限:
<uses-permission android:name="android.permission.SEND_SMS" /
<uses-permission android:name="android.permission.RECEIVE_SMS" /
<uses-permission android:name="android.permission.READ_SMS" /
<uses-permission android:name="android.permission.WRITE_SMS" /
1.自定义SmsBroadcastReceiver
(1)自定义SmsBroadcastReceiver继承自BroadcastReceiver,并重写OnReceive方法
mContext = context;
//获取短信的bundle
Bundle bundle = intent.getExtras();
//短信对象
SmsMessage msg;
if (null != bundle) {
//获取pdu编码的短信数组(接受的短信都是以pdu编码的16进制数组)
Object[] smsObj = (Object[]) bundle.get("pdus");
for (Object object : smsObj) {
//将pdu编码的短信解析为SmsMessage对象
msg = SmsMessage.createFromPdu((byte[]) object);
//获取短信内容
String msgBody = msg.getDisplayMessageBody();
//获取发送短信的号码
String number = msg.getOriginatingAddress();
//获取短信时间戳
long time = msg.getTimestampMillis();
//获取我们在主页面设置的要回复短信的关键字及短信内容的bean
List<SmSBean smsList = ShareUtil.getInstance(context).getSMS();
for