Android项目实现短信的发送、接收和对短信进行拦截

所属分类: 软件编程 / Android 阅读数: 29
收藏 0 赞 0 分享

说实话,关于Android中对短信的一些相关操作是一个比较入门的东西。那我现在还要来写这一篇博客的原因只是因为现在开发中有相关内容,而又想将这些东西分享给更多的人来学习,同时在以后对Android系统的短信进行其他学习的时候也就放在这里做一个记录了,于是就写了这篇啰嗦的文章。如果你觉得这是一个不错的东西,欢迎收藏,以便在以后更方便地查看本人在此篇文章中更新的内容。下面我就从标题中的三个方面来对Android系统中的短信操作进行一个简单地学习。

短信的发送

由于Android中对短信发送方法的优良封装,之后对发送短信的开发就显得异常的简单了。

public static void sendMessage(Context context, String content, String phoneNumber) { 
    SmsManager sms = SmsManager.getDefault(); 
    PendingIntent pi = PendingIntent.getBroadcast(context, 0, new Intent(), 0); 
    sms.sendTextMessage(phoneNumber, null, content, pi, null); 
  } 

 别忘了还有权限问题: 

<uses-permission android:name="android.permission.SEND_SMS" /> 

短信的接收

对于短信息的接收相对来说会复杂一些。而复杂的原因大家也应该比较容易理解——接收是不可控制的。也就是说我们的手机根本不知道什么时候会有一条短信息过来。由于过于被动,Android的机制中就出现了一个强大到让你佩服的东西,那就是广播接收者。我们注册一个广播接收者,然后让这个广播接收者时时刻刻地去监听短信息是否到达的这一事件。就这样,被动触发事件完美地解决了。下面让我们来看看这个过程:

public void onReceive(Context context, Intent intent) { 
     
    if (intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")) { 
      Bundle bundle = intent.getExtras(); 
       
      Object messages[] = (Object[]) bundle.get("pdus"); 
      SmsMessage smsMessage[] = new SmsMessage[messages.length]; 
      for (int n = 0; n < messages.length; n++) { 
        smsMessage[n] = SmsMessage.createFromPdu((byte[]) messages[n]); 
      } 
      showToast(context, "短信内容: " + smsMessage[0].getMessageBody()); 
    } 
  } 

添加权限:

<uses-permission android:name="android.permission.RECEIVE_SMS" /> 
<uses-permission android:name="android.permission.READ_SMS" /> 

以及在manifest中进行一个静态注册:

<receiver android:name=".broadcast.SMSReceiver" > 
        <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
      </intent-filter> 
    </receiver> 

短信的拦截

在能够接收短信的基础上做一个短信拦截倒是简单了许多。因为能够接收,所以我只要成为第一个接收的人,并把接收到的短信不再向下传播,这就完成了短信息的拦截了。

提高优先权:

阻断传播:

短信的删除

以下是短信相关的协议

content://sms/inbox    收件箱
content://sms/sent    已发送
content://sms/draft    草稿
content://sms/outbox    发件箱
content://sms/failed    发送失败
content://sms/queued    待发送列表

就拿收件箱为例实现短信的删除代码如下:

实现删除短信中包含某一字段的短信:

public void deleteSMS(String smscontent) { 
    ContentResolver CR = getContentResolver(); 
    try { 
      // 准备系统短信收信箱的uri地址 
      Uri uri = Uri.parse("content://sms/inbox"); 
       
      // 查询收信箱里所有的短信 
      Cursor cursor = CR.query(uri, new String[] { "_id", "address", "person", "body", "date", "type" }, null, null, null); 
      int count = cursor.getCount(); 
      if (count > 0) { 
        while (cursor.moveToNext()) { 
          String body = cursor.getString(cursor.getColumnIndex("body"));// 获取信息内容 
          if (body.contains(smscontent)) { 
            int id = cursor.getInt(cursor.getColumnIndex("_id")); 
            CR.delete(Uri.parse("content://sms"), "_id=" + id, null); 
          } 
        } 
      } 
 
    } catch (Exception e) { 
      Log.v("e", e.getMessage()); 
    } 
  } 

根据最新的短信实现删除信息(删除的对象是联系人而非短信)

public void deleteSMS() { 
    ContentResolver CR = getContentResolver(); 
    // 查询收信箱里所有的短信 
    Cursor cursor = CR.query(Uri.parse("content://sms/inbox"), new String[] { "_id", "thread_id" }, null, null, null); 
    if (cursor != null) { 
      cursor.moveToFirst(); 
      int a = cursor.getCount(); 
      int b = cursor.getColumnCount(); 
      long threadId = cursor.getLong(1); 
      CR.delete(Uri.parse("content://sms/conversations/" + threadId), null, null); 
    } 
  } 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

更多精彩内容其他人还在看

Android设计登录界面、找回密码、注册功能

这篇文章主要为大家详细介绍了Android设计登录界面的方法,Android实现找回密码、注册功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android通过手势实现答题器翻页效果

这篇文章主要为大家详细介绍了Android通过手势实现答题器翻页效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android采用双缓冲技术实现画板

这篇文章主要为大家详细介绍了Android采用双缓冲技术实现画板的相关资料,思路清晰,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android开发之毛玻璃效果实例代码

这篇文章主要给大家分享android开发之毛玻璃效果的实例代码,非常具有参考借鉴价值,感兴趣的朋友一起学习吧
收藏 0 赞 0 分享

Android实现桌面悬浮窗、蒙板效果实例代码

这篇文章主要介绍了Android实现桌面悬浮窗、蒙板效果实例代码的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

深入解读Android的Volley库的功能结构

这篇文章主要介绍了Android的Volley开发框架的功能结构,Volley是Android开发中网络部分的一大利器,包含很多HTTP协议通信的相关操作,需要的朋友可以参考下
收藏 0 赞 0 分享

Android开发中使用Volley库发送HTTP请求的实例教程

这篇文章主要介绍了Android开发中使用Volley库发送HTTP请求的实例教程,包括创建Volley单例的基本知识与取消Request请求的技巧等,需要的朋友可以参考下
收藏 0 赞 0 分享

Android仿QQ聊天撒花特效 很真实

本文写的这个特效,是关于聊天的,你肯定遇到过,就是你跟人家聊天的时候,比如发送应(么么哒),然后屏幕上全部就是表情了,今天我们就是做这个,撒花的特效,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android的HTTP操作库Volley的基本使用教程

这篇文章主要介绍了Android的HTTP操作库Volley的基本使用教程,包括JSON请求与图片加载等用法的实例,需要的朋友可以参考下
收藏 0 赞 0 分享

Android仿水波纹流量球进度条控制器

这篇文章主要介绍了Android仿水波纹流量球进度条控制器的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享
查看更多