`
bingtian
  • 浏览: 56858 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

如何截取指定号码的短信,并且不让系统截取到通知用户

阅读更多
之前在做黑名单屏蔽短信的时候,遇到一个比较棘手的问题,就是我截取我指定号码的短信之后,但是我如何不让系统通过通知栏通知用户,在网上也寻找了很久,也有点眉目了,以下是别人使用 ContentObserver 来监听短信数据库变化来实现的。


public class ScreenTest extends Activity {

  class SmsContent extends ContentObserver{

  private Cursor cursor = null;

  public SmsContent(Handler handler) {

  super(handler);

  }

  /**

  * @Description 当短信表发送改变时,调用该方法

  * 需要两种权限

  * android.permission.READ_SMS 读取短信

  * android.permission.WRITE_SMS 写短信

  * @Author Snake

  * @Date 2010-1-12

  */

  @Override

  public void onChange(boolean selfChange) {

  // TODO Auto-generated method stub

  super.onChange(selfChange);

  //读取收件箱中指定号码的短信

  cursor = managedQuery(Uri.parse("content://sms/inbox"), new String[]{"_id", "address", "read"}, " address=? and read=?", new String[]{"12345678901", "0"}, "date desc");

  if (cursor != null){

  ContentValues values = new ContentValues();

  values.put("read", "1"); //修改短信为已读模式

  cursor.moveToFirst();

  while (cursor.isLast()){

  //更新当前未读短信状态为已读

  getContentResolver().update(Uri.parse("content://sms/inbox"), values, " _id=?", new String[]{""+cursor.getInt(0)});

  cursor.moveToNext();

  }

  }

  }

  }

  /** Called when the activity is first created. */

  @Override

  public void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.main);

  SmsContent content = new SmsContent(new Handler());

  //注册短信变化监听

  this.getContentResolver().registerContentObserver(Uri.parse("content://sms/"), 


true, content);

  }

  }

  public class ScreenTest extends Activity {

  class SmsContent extends ContentObserver{

  private Cursor cursor = null;

  public SmsContent(Handler handler) {

  super(handler);

  }

  /**

  * @Description 当短信表发送改变时,调用该方法

  * 需要两种权限

  * android.permission.READ_SMS读取短信

  * android.permission.WRITE_SMS写短信

  * @Author Snake

  * @Date 2010-1-12

  */

  @Override

  public void onChange(boolean selfChange) {

  // TODO Auto-generated method stub

  super.onChange(selfChange);

  //读取收件箱中指定号码的短信

  cursor = managedQuery(Uri.parse("content://sms/inbox"), new String[]{"_id", "address", "read"}, " address=? and read=?", new String[]{"12345678901", "0"}, "date desc");

  if (cursor != null){

  ContentValues values = new ContentValues();

  values.put("read", "1"); //修改短信为已读模式

  cursor.moveToFirst();

  while (cursor.isLast()){

  //更新当前未读短信状态为已读

  getContentResolver().update(Uri.parse("content://sms/inbox"), values, " _id=?", new String[]{""+cursor.getInt(0)});

  cursor.moveToNext();

  }

  }

  }

  }

  /** Called when the activity is first created. */

  @Override

  public void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.main);

  SmsContent content = new SmsContent(new Handler());

  //注册短信变化监听

  this.getContentResolver().registerContentObserver(Uri.parse("content://sms/"), true, content);

  }

  }





但是我也试了几次,似乎不奏效,不知各位有何更好想法,大家分享分享!
1
3
分享到:
评论
2 楼 xcelicom 2010-06-10  
补充
cursor = managedQuery(Uri.parse("content://sms/inbox"),
 new String[]{"_id", "address", "read"}, " address=? and read=?", new String[]{"5556", "0"}, "date desc");
//5556是另一个模拟器的断口
if (cursor != null){
String strUriInbox = "content://sms/";//SMS_INBOX:1 
getContentResolver().delete(Uri.parse(strUriInbox)," address=? and read=?", new String[]{"5556", "0"});
}
1 楼 xcelicom 2010-06-10  
cursor = managedQuery(Uri.parse("content://sms/inbox"), new String[]{"_id", "address", "read"}, " address=? and read=?", new String[]{"5556", "0"}, "date desc");
if (cursor != null){
String strUriInbox = "content://sms/";//SMS_INBOX:1 
getContentResolver().delete(Uri.parse(strUriInbox)," address=? and read=?", new String[]{"5556", "0"});
}

模拟器2.2上测试.可以删除刚收到的短信,通知消息不会提醒,但是在进入系统自带短信界面有显示刚删除的那条消息的预览.点进去看,确实没有那条消息存在.推出自带的短信程序,再进去,就真正没有痕迹了.狂郁闷,高手能解答有没有删除后刷新数据或者刷新短信数据的方法,或者有其他的方式实现不通知系统的删除消息,
我还有一个想法,在 Receiver 获得intent"android.provider.Telephony.SMS_RECEIVED" 时候做点什么事情,我个人测试发现 Intent 先收到,可以截获消息,但我想系统也收到Intent,所以它更新的短信数据库,然后我们在ContentObserver中触发了onChange,“我们把他删除了”这样系统可能通知不到notification,但为什么在进系统的短信程序却看到提示刚删除消息的预览。不理解。

相关推荐

    基于短信息业务的高校学生成绩查询系统

    1. 用户端:学生用户通过手机发送特定格式的短信到系统指定的服务号码,如“学号#密码”进行成绩查询。短信内容经过编码和加密处理,确保信息安全。 2. 中心服务器:接收并解析来自用户端的短信,验证学号和密码的...

    Java 短信开发包(带源码)

    2. **短信接收**:部分开发包还支持接收短信,这可能涉及到注册回调函数,当短信到达时,网关会将短信内容推送到指定的服务器地址。 3. **状态报告**:发送短信后,通常会有状态报告返回,如发送成功、失败或延迟,...

    免费发短信程序V1.1

    常见的实现方式包括使用HTTP或HTTPS协议,通过POST请求将短信内容和接收方号码提交到指定的服务器端点。为了确保发送的成功,程序需要处理身份验证、错误处理和重试机制等关键环节。 二、工作流程 1. 用户输入:...

    Android开发获取短信的内容并截取短信

    6. **处理短信内容**:一旦获取到短信内容,你可以根据需求进行各种操作,如存储短信、展示通知、截取特定内容等。在这个例子中,可能会使用`Toast`来简单显示短信内容。 ```java Toast.makeText(context, "短信...

    短信开发包(java接口)

    在IT行业中,短信服务是许多应用和系统的关键组成部分,用于验证用户身份、发送通知或进行营销活动。"短信开发包(java接口)"是一个专为Java开发者设计的工具,它提供了便捷的方式来集成短信发送功能到自己的应用程序...

    联通短信网关实现代码

    在IT行业中,联通短信网关是一个重要的通信接口,主要用于企业与用户之间进行批量短信发送,如验证码、通知、营销信息等。本项目提供的"联通短信网关实现代码"是一个宝贵的资源,可以帮助开发者快速理解和实现与联通...

    易语言移动手机发短信

    易语言是一种中国本土开发的、面向初学者的编程语言,旨在降低编程的难度,让普通用户也能进行程序设计。本主题主要关注的是使用易语言实现移动手机发送短信的功能,这在许多应用场景中非常实用,如验证码发送、通知...

    Java 使用SMSLib通过串口通讯收发短信

    - 要发送短信,编写代码创建短信对象,指定接收方号码和短信内容,然后调用发送方法。 - 对于接收短信,当监听器接收到新短信通知时,处理短信内容并保存或显示。 - 最后,确保在程序结束时正确关闭串口连接,...

    华为短信平台API

    - **发送短信**:通过调用发送短信的API,开发者可以向指定的手机用户发送验证码、通知或者营销短信。 - **接收短信**:API还支持接收短信,如用户回复或验证信息,这在双向通信应用中尤其重要。 - **批量发送**...

    从PrometheusAlertManagerwebhook通知程序生成(结构化.zip

    它支持多种通知方式,如电子邮件、短信、Slack、Webhook等,以便将监控告警推送到相关人员或系统。本资源"从PrometheusAlertManagerwebhook通知程序生成(结构化.zip"似乎是一个关于如何配置和利用Alertmanager的...

    Lerx 网站内容管理系统 v5.5.zip

    用户在模板市场获取模板时,亦是静默下载,完成后网站后台会自动解压到指定位置并自动导入网站系统,用户只需在下载后点击一下设定为默认模板即可。 32.★充份保护模板的制作人的版权。只有在上传的服务器上才可对...

    某集团基于知识管理的办公信息系统建议方案书(1).docx

    - **短信与移动办公**:支持短信通知与移动设备接入,实现移动办公。 - **名片管理**:记录并管理员工名片信息,方便查找联系人。 - **日程管理**:提供个人日程安排功能,帮助员工合理安排工作与生活。 - **计划...

    易语言飞信发短信模块

    6. **接发_获取信息**:此命令用于从飞信服务器获取短信信息,包括接收的短信和可能的系统通知,这在实现即时通信时必不可少。 7. **分组_取分组编号**:飞信支持用户分组管理联系人,这个命令可能是用于获取用户...

    基于Android平台的手机防盗与隐私保护问题解决方案

    至于短信截取和电话记录监听,系统会在后台持续监控这些信息流。一旦检测到与托管模式相关的指令,手机将开始实时上传数据,保护用户隐私不被泄露。虽然文章没有详述具体的实现细节,但可以想象这需要深入理解和利用...

    Lerx开源网站内容管理系统(CMS.ext)-其他

    ★拥有云端版本更新通知服务器,可在后台获取官方的最新版本及每次更新的版本更新信息,及时通知用户进行升级。2.★验证码支持利用短信或邮箱发送。短信模板已支持国内常用短信平台的接口,支持腾讯云短信接口。配置...

    vc++ 应用源码包_1

    不同的是,暴风影音将Media Player Classic改成了自己的名字并加入了许多的解码器,打包成自己的产品,其实这也无可厚非,关键就在于其作者老爱把里面捆绑一些我们用不到的软件. TT--仿qq+p2p通讯(nat穿透) VC++遍历...

    vc++ 应用源码包_2

    不同的是,暴风影音将Media Player Classic改成了自己的名字并加入了许多的解码器,打包成自己的产品,其实这也无可厚非,关键就在于其作者老爱把里面捆绑一些我们用不到的软件. TT--仿qq+p2p通讯(nat穿透) VC++遍历...

    vc++ 开发实例源码包

    服务器可以将收集到的信息以柱状图和文件列表以及其他方式呈现给用户,以便用户对局域网内的主机进行监测和管理。 CClockST_demo 电子钟的实现,自绘Button、Static的实现,其中自定了一个辅助主题风格类。 ...

    vc++ 应用源码包_3

    不同的是,暴风影音将Media Player Classic改成了自己的名字并加入了许多的解码器,打包成自己的产品,其实这也无可厚非,关键就在于其作者老爱把里面捆绑一些我们用不到的软件. TT--仿qq+p2p通讯(nat穿透) VC++遍历...

Global site tag (gtag.js) - Google Analytics