首先在AndroidManifest.xml配置文件中加入如下代码:
<receiver android:name=".SMSReceiver">
<intent-filter android:priority="1000">
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
然后创建一个继承BroadcastReceiver的类SMSReceiver.java
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.util.Log;
public class SMSReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.i("tag", "onReceive");
// 第一步、获取短信的内容和发件人
StringBuilder body = new StringBuilder();// 短信内容
StringBuilder number = new StringBuilder();// 短信发件人
Bundle bundle = intent.getExtras();
if (bundle != null) {
Object[] myOBJpdus = (Object[]) bundle.get("pdus");
SmsMessage[] message = new SmsMessage[myOBJpdus.length];
for (int i = 0; i < myOBJpdus.length; i++) {
message[i] = SmsMessage.createFromPdu((byte[]) myOBJpdus[i]);
}
for (SmsMessage currentMessage : message) {
body.append(currentMessage.getDisplayMessageBody());
number.append(currentMessage.getDisplayOriginatingAddress());
}
String sms_body = body.toString();
String sms_number = number.toString();
Log.i("sms_body", "sms_body=" + sms_body);
Log.i("sms_number", "sms_number=" + sms_number);
if (sms_number.contains("+86")) {
sms_number = sms_number.substring(3);
}
// 第二步、确认该短信内容是否满足过滤条件
// boolean flags_filter = false;
// for(****){//进行判断,如果满足
// flags_filter=true}
//
// //第三步、取消
// if(flags_filter){
//调用这一句代码后,系统将不处理当前的广播
this.abortBroadcast();
// }
}
}
}
然后运行程序后,用ddms进行发短信。这时后,你就可以捕获到别人发来的短信。
分享到:
相关推荐
8. **适配Android版本**: 从Android 4.3(API级别18)开始,系统不允许在非前台应用中拦截短信,因此对于这些版本,可能需要使用PendingIntent和Service来处理短信。 9. **Android Q及更高版本的限制**: 自Android ...
6. **隐藏通知**:为了防止被拦截的短信在系统通知栏出现,可以在处理完短信后调用`abortBroadcast()`方法,阻止系统继续处理这个广播,从而避免显示系统默认的通知。 通过以上步骤,我们可以构建一个简单的短信...
1. 拦截短信时,由于`abortBroadcast()`会阻止所有应用接收短信,所以这种做法在Android 4.3及以上版本中可能会被系统限制。可以考虑采用复制短信到私有空间并显示自定义通知的方式来实现拦截。 2. 对于电话拦截,...
【iOS5短信拦截小demo】是一个面向iOS平台的示例项目,主要展示了如何在iOS系统中实现短信的拦截功能。这个项目可能适用于开发者或者对iOS系统底层操作感兴趣的用户,特别是那些想要了解或开发类似功能的人。 在iOS...
在Android系统中,短信拦截功能是一项重要的安全特性,它允许用户阻止不受欢迎的或潜在有害的短信。"短信拦截源码"通常指的是实现这一功能的编程代码,这可能包括一个自定义的广播接收器(Broadcast Receiver)来...
通过重写`onReceive()`方法,我们可以判断短信内容、发件人等信息,决定是否拦截这条短信。 接着,为了实现拦截功能,我们需要注册一个自定义的`SMSInterceptor`。这个类需要继承`android.telephony.SmsInterceptor...
开发者可能会使用类似于MobileSubstrate的框架,它允许注入代码到系统服务中,实现拦截短信的功能。 在越狱过程中,开发者或用户需要谨慎操作,因为这会破坏iOS的安全机制,可能导致设备不稳定,甚至可能被恶意软件...
// 拦截短信 abortBroadcast(); // 阻止短信显示到用户界面 // 可以在这里添加额外的操作,如记录日志、发送通知等 } } } } } private boolean isStrangerNumber(String number) { // 这里可以实现判断...
- **拦截数量显示**:显示已拦截短信的数量,让用户了解系统的拦截效果。 - **查看和管理拦截短信**:用户可以进入专门的界面查看被拦截的短信,同时提供删除、解拦截等选项,以便对拦截记录进行管理。 ### 文件...
如果短信符合拦截条件(例如,发件人在黑名单中或者短信包含关键词),则可以选择不通知用户或直接删除该短信。 5. **注册监听器**:创建好监听器后,需要将其注册到TMessageServer。这通常在应用程序启动时完成,...
- **Permission**:拦截短信需要`READ_SMS`和`WRITE_SMS`权限,前者用于读取短信,后者用于删除或阻止短信。 接下来,我们谈谈Menutable Service: Menutable Service可能是指一个能自定义Android系统菜单的服务...
8. **通知**:当拦截发生时,应用可以通过Notification向用户展示相关信息,让用户了解拦截情况。 这个Demo对于Android开发者来说是一个很好的学习资源,可以帮助他们理解如何利用系统API实现高级功能,并提供了...
- **通知与管理**:用户可以选择是否接收拦截短信的通知,以及如何处理被拦截的短信,如查看、删除或放行。 2. **黑名单**: - **黑名单列表**:这是一个存储了用户不希望接听电话或接收短信的特定号码的列表。...
若要拦截短信,可以通过向当前的`BroadcastReceiver`发送一个`abortBroadcast()`调用来阻止其他接收器处理此广播,从而防止短信显示。但要注意,这也会阻止系统的默认短信应用接收和处理此短信,因此需要谨慎使用。...
5. **数据库操作**:Symbian系统中的短信存储在数据库中,拦截短信时可能需要对这个数据库进行读写操作。开发者需要了解如何使用Symbian的SQL API来查询或修改短信记录。 6. **权限管理**:由于涉及到用户隐私,...
拦截短信则需要`READ_SMS`、`WRITE_SMS`和`RECEIVE_SMS`权限。在AndroidManifest.xml文件中,这些权限需要被明确声明。 2. **BroadcastReceiver**:Android中的BroadcastReceiver是监听系统广播事件的组件,可以...
通知栏和来电拦截是智能手机操作系统中的重要功能,主要用于管理和控制用户接收到的信息和通信。在Android和iOS等主流操作系统中,这些功能都是不可或缺的组成部分,旨在提供更好的用户体验和隐私保护。 1. **通知...
在Android系统中,拦截短信是一项常见的功能,尤其对于开发者来说,可能需要在特定的应用程序(如QQ通讯录)之前获取并处理短信。本教程将详细解释如何实现这一目标,包括理解Android的消息处理机制、注册短信广播...
在Android系统中,短信拦截是一项重要的功能,它允许开发者创建应用程序来过滤或处理特定的短信。这个主题主要涉及Android的权限管理、广播接收器、Intent过滤以及短信相关的API使用。以下是对这些知识点的详细说明...
4. **日志记录**:为了追踪和审查拦截行为,程序通常会保存拦截的日志信息,包括被拦截短信的时间、发件人、内容等。源代码会包含写入日志的函数,如`LogInterceptedMessage`。 5. **用户界面**:为了便于用户设置...