当前位置: 首页 > news >正文

Android 短信发送监控

最近研究了一下如何对Android发送短信进行监控,首先考虑到是否会有广播机制,查了一下api文档发现没有,到了网上查了半天也没用解决办法,主要问题还是Android没有提供这中监听机制,怎么办呢,诶,苦想了几天,想到了一个还算可行的方法,但是只能对系统短信进行监控,还是不能对第三方进行监控,没办法,好了下面介绍一下我的实现方法。主要是利用Android对contentProvider内容变化监听方法实现ContentObserver类,

具体如下;

package com.listener.app;import java.text.SimpleDateFormat;
import java.util.Date;import android.app.Service;
import android.content.ContentResolver;
import android.content.Intent;
import android.database.ContentObserver;
import android.database.Cursor;
import android.net.Uri;
import android.os.Handler;
import android.os.IBinder;
import android.util.Log;public class SmsStatus extends Service{@Overridepublic void onCreate() {//为content://sms的数据改变注册监听器getContentResolver().registerContentObserver(Uri.parse("content://sms/"), true, new SmsObserver(new Handler()));super.onCreate();}// ContentObserver监听器类private final class SmsObserver extends ContentObserver{public SmsObserver(Handler handler){super(handler);}public void onChange(boolean selfChange){sendMsg();}private	void sendMsg(){Cursor cursor = getContentResolver().query(Uri.parse("content://sms/outbox"), null, null, null, null);if (cursor.moveToFirst()){StringBuilder sb = new StringBuilder();// 获取短信的发送地址sb.append("address=").append(cursor.getString(cursor.getColumnIndex("address")));					// 获取短信的标题sb.append('\n'+"subject=").append(cursor.getString(cursor.getColumnIndex("subject")));// 获取短信的内容sb.append('\n'+"body=").append(cursor.getString(cursor.getColumnIndex("body")));// 获取短信的发送时间SimpleDateFormat dateFormat = new SimpleDateFormat(   "yyyy-MM-dd hh:mm:ss");   Date d = new Date(Long.parseLong(cursor.getString(cursor.getColumnIndex("date"))));   String date = dateFormat.format(d); sb.append('\n'+"time=").append(date);Log.e("msg", "Sent SMS:" + sb.toString());}if(cursor!=null){cursor.close();cursor=null;}}@Overridepublic IBinder onBind(Intent intent) {return null;}	}

以上有几点需要注意;

1,content必须为content://sms/不能改为content://sms/outbox,即系统只能对整个短信的content进行监控而不能对content中item进行监控

2,ContentObserver监听时最好放置在service类中,以确保内容为时时监听。


http://www.lryc.cn/news/570598.html

相关文章:

  • 【Bug:docker】--docker的wsl版本问题
  • android apk反编译(Doapk工具和dex2jar工具介绍)
  • 网络正常,浏览器无法连接到代理服务器
  • C语言状态机:从入门到精通
  • 通用embedding模型和通用reranker模型,观测调研
  • 太阳花浏览器_钙钛矿太阳能电池精准测量 线上直播课程报名步骤详解
  • C语言 整数与字符串的相互转换
  • 抖音蓝牙遥控器芯片方案、自拍器蓝牙芯片方案 简易版 io控制
  • 2024年最全【入门级C语言小游戏】——“三子棋
  • 三态门有一个信号控制端en_数字电路可控门电路原理(三态/同相/反相、缓冲/驱动电路)...
  • 以初学者角度介绍TestComplete的使用
  • 使用md5校验文件
  • 综述|探究深度学习在园艺研究中的应用
  • Turbo C 3.0安装及使用说明
  • Spring是如何实现有代理对象的循环依赖
  • linux操作系统各版本直接的区别?
  • Junit Test a getter
  • Spring+Quartz实现定时任务的配置方法
  • 拯救OIBH总部
  • 甘特图工具和资源。你了解多少?
  • 62、数据访问-druid数据源starter整合方式
  • Python小酷库系列:Python中的JSON工具库(3)
  • DeepSeek提示词指南:从基础到高阶的全面解析
  • C++ 01背包问题
  • Agentic Workflow是什么?Agentic Workflow会成为下一个AI风口吗?
  • win7系统怎么打开Windows PowerShell
  • MySQL-DCL数据控制语言详解
  • 双击ctrl搜索 意在颠覆用户的习惯
  • RPG29:制作ui基础
  • 蜘蛛日志分析工具_如何分析网站日志 - 360蜘蛛池