拦截短信 作者:bingzhi更新于 07月26日访问(70)评论(1) 一、场景需求 在做一些需求的时候碰到了,需要把收费短信给屏蔽了,或者说拦截比较正确。 二、网上查了一些资料 How to prevent SMS going to inbox in Android? http://stackoverflow.com/questions/9175969/how-to-prevent-sms-going-to-inbox-in-android?lq=1 This shows a sample of how to delete SMS https://gist.github.com/vivdub/5178e798d9a00cac4ddb How to delete an SMS from the inbox in Android programmatically? http://stackoverflow.com/questions/419184/how-to-delete-an-sms-from-the-inbox-in-android-programmatically?lq=1 Can we delete an SMS in Android before it reaches the inbox? http://stackoverflow.com/questions/1741628/can-we-delete-an-sms-in-android-before-it-reaches-the-inbox?lq=1 Android SMS intercept without notification icon or WAP-PUSH messages http://stackoverflow.com/questions/1732537/android-sms-intercept-without-notification-icon-or-wap-push-messages 三、大致整理如下: 1、需要拦截短信用一个广播接收器去接收接收短信的广播 2、这个广播接收器的优先级要比别人都高 四、主要代码如下 1、SMSReceiver 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 public class SMSReceiver extends BroadcastReceiver { private static final String TAG = "SMSReceiver "; public static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED"; private static final String MSG_KEY1 = "key1"; private static final String MSG_KEY2 = "key2"; public SMSReceiver() { super(); Log.i(TAG, "SMSReceiver()"); } @Override public void onReceive(Context context, Intent intent) { Log.i(TAG, "onReceive()"); Log.i("onReceive", ""+intent.getAction()); if(SMS_RECEIVED.equals(intent.getAction())){ Object[] pdus = (Object[]) intent.getExtras().get("pdus");//获取短信内容 for(Object pdu:pdus){ byte[] data = (byte[])pdu;//获取单条短信内容,短信内容以pdu格式存在 SmsMessage message = SmsMessage.createFromPdu(data);//使用pdu格式的短信数据生成短息对象 String sender = message.getOriginatingAddress();//获取短信的发送者 String content = message.getMessageBody();//获取短信的内容 Date date = new Date(message.getTimestampMillis()); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String sendTime = format.format(date); Log.i(TAG, "sender:"+sender+" content:"+content+" sendTime:"+sendTime); //SmsManager manager = SmsManager.getDefault(); //把你拦截到的短信发送到指定号码,此处为5566 //manager.sendTextMessage("5566", null, "发送人:"+sender+"----发送时间:"+sendTime+"----内容:"+content, null, null); //if("number".equals(sender)){ // abortBroadcast(); //} //如果不想让主机接收某个号码的信息、number为指定号码 Log.i("content.contains"+MSG_KEY1, ""+(content.contains(MSG_KEY1))); Log.i("content.contains"+MSG_KEY2, ""+(content.contains(MSG_KEY2))); //如果短信内容包含MSG_KEY1则拦截该短信 //或者可以其他条件eg:号码是什么的时候拦截该短信 if(content.contains(MSG_KEY1)){ //广播不在往下传 abortBroadcast(); // }else if(content.contains(MSG_KEY2)){ abortBroadcast(); } } } } } 2、在AndroidMenifest.xml中配置 1 2 3 4 5 6 7 8
<!-- 2147483647为Integer.MAX_VALUE -->3、在使用的Activity中OnCreate()中注册 1 2 3 4 smsReceiver = new SMSReceiver(); IntentFilter filter = new IntentFilter(); filter.setPriority(Integer.MAX_VALUE); registerReceiver(smsReceiver, filter); 4、在使用的Activity中的OnDestroy中 1 unRegistSmsReceiver(); 1 2 3 4 5 private void unRegistSmsReceiver(){ if(smsReceiver!=null){ unregisterReceiver(smsReceiver); } } 五、By the Way 下面代码可以查看这些短信广播接收者的优先级 1 2 3 4 5 Intent smsReceIntent = new Intent("android.provider.Telephony.SMS_RECEIVED"); List infos = this.getPackageManager().queryBroadcastReceivers(smsReceIntent, 0); for(ResolveInfo info:infos){ Log.i(TAG, ""+("Receiver: "+info.activityInfo.name+", priority:"+info.priority)); } 声明:eoe文章著作权属于作者,受法律保护,转载时请务必以超链接形式附带如下信息 原文作者: bingzhi
原文地址: http://my.eoe.cn/787339/archive/5967.html
相关推荐
通过sms2mikeV5.5_by火鸟1412,用户可以充分利用SMS的强大建模功能,同时享受MIKE 21的高效模拟能力,极大地扩展了水环境研究的灵活性。不过,值得注意的是,由于这类转换工具多为用户自行开发,可能存在一些未公开...
这包括用户界面的设计和事件处理,与服务器的连接和断开,短信的编码和解码,错误处理和日志记录等模块。开发者可能还使用了一些设计模式,如工厂模式用于创建不同类型的Socket,或者单例模式用于管理全局资源。 总...
8. **UI设计**:为了提供用户友好的界面,开发者需要创建一个图形用户界面(GUI),允许用户输入短信内容、选择接收方,以及查看发送和接收记录。 9. **多线程**:为了防止程序在等待短信响应时阻塞,可能需要使用...
这可能是一个关于短信服务的软件、API、库、教程或者案例研究的集合。 由于文件列表只包含"1-sms",我们可以假设这是压缩包中的主要文件。这个文件可能是以下几种类型: 1. **源代码**:如果"1-sms"是源代码文件,...
标题中的“SMS.rar_isag_isag java_isag sms_java sms”揭示了这是一个关于ISAG(Integrated Service Access Gateway)系统的Java编程实现,特别是涉及到短信(SMS)发送功能的源代码。ISAG是电信行业中的一种关键...
**SMS4算法详解** ...通过深入研究源代码,我们可以了解到S盒在算法中的核心地位以及如何设计和选择S盒以提升加密强度。对于学习和理解密码学,尤其是轻量级密码设计,SMS4算法及其源代码是一个很好的实例。
对于初学者或有经验的开发者来说,研究这样的代码可以帮助他们提升编程技巧,理解如何构建类似的应用程序,包括如何处理网络通信、数据加密、用户界面设计以及错误处理等方面的知识。 【标签】"sms" 标签明确了这个...
对于初学者来说,研究这个系统源代码可以学习到C#编程、数据库设计以及企业级应用开发的实践经验。 总的来说,【SMS库存管理系统(C#版)】是C#编程在企业解决方案中的一个实例,展示了如何利用C#和.NET框架来构建一...
支付是SMS应用在移动商务中的重要组成部分,它允许用户通过手机进行购物、支付账单、转账等金融交易。移动支付的兴起得益于SMS的便捷性和普及性。用户只需发送短信指令到指定的服务平台,就能完成支付操作,极大地...
通过对源代码的深入研究,开发者不仅可以掌握VC++编程技巧,还能了解到通信协议、串口通信、数据库操作等多方面的知识,提升自己的综合能力。同时,这个项目也提醒我们,任何软件系统的设计和实现都需要兼顾易用性、...
目的是减少工作人员会议前的准备工作,以及便于会后查询和打印会议记录,利用信息资源优势存储历史会议记录。 2. 传统会议管理系统的局限性 尽管传统会议管理系统相比以往有了一定的进步,但仍存在以下主要问题: -...
描述中提到的“院级教务系统需求报告分析”揭示了文件的核心内容——对教务系统需求的深入研究和分析,这将为设计院级教务管理系统提供关键指导。 教务管理系统的功能通常涵盖以下几个方面: 1. **课程管理**:...
《SMS管理系统的深入解析》 在信息技术领域,管理系统扮演着至关...通过对"SMS.accdb"数据库的深入研究,我们可以更深入地理解系统背后的逻辑和数据结构,从而更好地利用这个工具,提升企业的运营效率和客户满意度。
3. "SMS_Ali_Component_Demo_2021-08-31(1.0.0.1).rar":可能是演示程序的源代码压缩包,供开发者研究和学习,以便理解组件的内部机制和调用方式。 4. "SMS_Ali_Component_Src_2021-08-31(1.0.0.1).rar":这是组件...
在IT行业中,短消息服务(SMS)是一种广泛用于通信的技术,尤其在移动设备上。"SMS.rar_短消息"这个压缩包文件似乎包含了与SMS开发和测试相关...通过解压和研究其中的文件,可以获取关于串口SMS通信的实用知识和工具。
由于短信服务提供商通常会提供一个电子邮件到短信的映射,我们将收件人的电子邮件地址设置为手机号码加上特定的SMTP前缀,如`1234567890@sms.provider.com`。以下是一个示例: ```vbnet Imports System.Net.Mail ...
综上所述,"C# SMS管理应用程序及源代码"涵盖了C#编程、ASP.NET Web开发、数据库操作、API集成、用户管理等多个方面,为学习和研究提供了一个全面的实践案例。通过分析和研究这些文件,开发者不仅可以学习到具体的...
smspdu.exp文件是导出文件,它是编译链接DLL时生成的,记录了DLL导出的函数和变量信息。这个文件在编译阶段使用,帮助生成导入库,确保在编译应用时能正确找到DLL中的函数。 在实际开发中,当一个程序需要使用sms...
1. **CHANGELOG**:这是一个记录软件版本更新历史的文件,通常包含每次更新的改动、修复的bug以及新功能的添加。通过阅读此文件,开发者可以了解sms-Libs自上次发布以来的所有改进和变动,从而更好地适应新版本。 2...