在Android开发中,广播接收者(Broadcast Receiver)是一种非常重要的组件,它允许应用程序在系统广播事件发生时接收到通知并做出响应。在这个“Android中采用广播接收者实现短信监控器、拦截外拨电话功能案例”中,我们将探讨如何利用BroadcastReceiver来监控手机中的短信和电话事件。 我们需要创建一个BroadcastReceiver的子类,比如`SmsAndCallReceiver`。这个类将继承BroadcastReceiver,并重写其`onReceive()`方法。在这个方法中,我们将处理接收到的广播意图(Intent)。 对于短信监控,我们需要监听`android.provider.Telephony.SMS_RECEIVED`这个动作。当接收到短信时,系统会发送这个广播。在`onReceive()`方法中,我们可以通过意图的行动来判断是否为短信接收事件,然后对短信内容进行处理,如记录、分析或采取其他操作。代码示例: ```java public class SmsAndCallReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(Telephony.Sms.Intents.SMS_RECEIVED_ACTION)) { // 获取短信内容 Bundle bundle = intent.getExtras(); if (bundle != null) { Object[] pdus = (Object[]) bundle.get("pdus"); for (Object pdu : pdus) { SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) pdu); String messageBody = smsMessage.getMessageBody(); String senderNumber = smsMessage.getDisplayOriginatingAddress(); // 这里可以进行进一步的处理,如存储短信,展示通知等 } } } } } ``` 接下来,我们要实现电话拦截功能,我们需要监听`android.intent.action.NEW_OUTGOING_CALL`这个广播。当用户拨打电话时,系统会发送这个广播。在`onReceive()`方法中,我们可以检查来电号码,并根据需要决定是否阻止电话拨出。代码示例: ```java @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)) { String phoneNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER); // 如果不希望拨打某个号码,可以在这里进行判断并阻止 if (phoneNumber.equals("你不希望拨打的号码")) { abortBroadcast(); // 阻止电话拨出 } } } ``` 为了使BroadcastReceiver生效,我们还需要在AndroidManifest.xml中注册它。有两种方式:静态注册和动态注册。静态注册是在manifest文件中直接添加receiver标签,这样应用启动时广播接收者就会自动启动。动态注册则是在代码中调用`registerReceiver()`方法,这通常用于需要根据应用状态或用户行为来决定是否接收广播的情况。 对于这个案例,如果希望应用在后台也能监控短信和电话,建议采用静态注册。在AndroidManifest.xml中添加如下代码: ```xml <receiver android:name=".SmsAndCallReceiver"> <intent-filter> <action android:name="android.provider.Telephony.SMS_RECEIVED" /> <action android:name="android.intent.action.NEW_OUTGOING_CALL" /> </intent-filter> </receiver> ``` 至此,我们就完成了短信监控和电话拦截的基本功能。不过,需要注意的是,从Android 6.0(API级别23)开始,需要在运行时请求读取和写入短信以及监听电话的权限。确保在适当的地方调用`checkSelfPermission()`和`requestPermissions()`方法来处理权限请求。 此外,文件列表中的`SMSListener`可能是一个实现了短信监听功能的具体类或文件,而`videonews`可能与视频新闻相关,但在这个案例中并未涉及。如果你需要这些文件的详细内容,可能需要查看它们的源代码或者提供更多的上下文信息。
































































































































- 1

- weixin_405872272017-10-11怎么打不开??我打开的方式不对?
- qq_326120932018-06-02下载了再看看
- bigbaddy0072016-06-13免费的,下载了再看·
- inclick2018-03-17免费的,下载了再看·

- 粉丝: 73
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 2023年大工春单片机原理及应用大作业题目及答案.doc
- Chapter网络体系结构.pptx
- 基于大数据分析技术的军校智慧图书馆信息服务模式探究(1).docx
- 【推荐下载】“工业互联网”将彻底改变GE的商业模式(1).pdf
- 0202新产品开发项目管理程序A.doc
- 2022计算机科学专业个人自我鉴定.docx
- 常州实用软件应用技巧.doc
- 浅谈计算机的发展状况(1).docx
- 计算机基础知识笔试题(1).doc
- 会计实务:软件企业增值税退税申请-0(1).doc
- 朝华OASphere企业办公自动化解决方案样本.doc
- SANsymphony-V-虚拟化结合.pptx
- 互联网个人工作总结范本(1).doc
- 基于JDPaint浮雕曲面零件设计及仿真加工和编程论文(1).docx
- 2019年网络管理个人实训总结.doc
- 2022网站编辑实习心得.docx


