安卓手机短信拦截app制作

安卓手机短信拦截app通常分为两个部分,一个是接收短信的部分,另一个是拦截短信的部分。下面我将为您详细介绍这两个部分的实现原理。

1. 接收短信的部分

在安卓系统中,接收短信的部分需要用到BroadcastReceiver和ContentObserver。BroadcastReceiver是一种可以接收并响应系统广播消息的组件,ContentObserver则是监听数据变化的观察者。

具体实现流程如下:

首先需要在AndroidManifest.xml文件中注册BroadcastReceiver组件,如下:

```

```

其中,SmsReceiver为自定义的BroadcastReceiver类。

SmsReceiver类的实现如下:

```

public class SmsReceiver 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 senderNum = smsMessage.getOriginatingAddress();

// 将短信内容和发送者号码传递给拦截部分进行处理

handleSms(context, messageBody, senderNum);

}

}

}

}

}

```

SmsReceiver类的实现主要是在onReceive方法中获取短信内容和发送者号码,然后将其传递给拦截部分进行处理。

2. 拦截短信的部分

在收到短信以后,拦截部分需要对短信内容进行处理,并决定是否拦截该短信。常见的短信拦截方式包括:

1)关键词过滤

通过对短信内容进行关键词匹配,如果匹配成功则拦截该短信。

2)黑名单拦截

如果短信发送者的号码在黑名单中,则拦截该短信。

3)白名单放行

如果短信发送者的号码在白名单中,则不拦截该短信。

具体实现流程如下:

在短信拦截应用中,可以通过SharedPreferences存储黑名单和白名单的信息。可以在设置界面中提供用户添加黑名单和白名单的按钮,并在处理短信时读取SharedPreferences中的信息。

```

public class SmsFilter {

// 判断是否在黑名单中

public static boolean inBlackList(Context context, String senderNum) {

SharedPreferences sp = context.getSharedPreferences("sms_filter", Context.MODE_PRIVATE);

String blacklist = sp.getString("blacklist", "");

return blacklist.contains(senderNum);

}

// 判断是否在白名单中

public static boolean inWhiteList(Context context, String senderNum) {

SharedPreferences sp = context.getSharedPreferences("sms_filter", Context.MODE_PRIVATE);

String whitelist = sp.getString("whitelist", "");

return whitelist.contains(senderNum);

}

// 判断短信内容是否包含关键词

public static boolean hasKeyword(Context context, String messageBody) {

SharedPreferences sp = context.getSharedPreferences("sms_filter", Context.MODE_PRIVATE);

String keyword = sp.getString("keyword", "");

return messageBody.contains(keyword);

}

}

```

然后在处理短信的方法中,调用上述方法判断是否拦截该短信。

```

public static void handleSms(Context context, String messageBody, String senderNum) {

boolean inBlackList = SmsFilter.inBlackList(context, senderNum);

boolean inWhiteList = SmsFilter.inWhiteList(context, senderNum);

boolean hasKeyword = SmsFilter.hasKeyword(context, messageBody);

if (inBlackList || (!inWhiteList && hasKeyword)) {

// 拦截短信

abortBroadcast();

}

}

```

在判断拦截条件时,如果短信发送者在黑名单中或者不在白名单中并且短信内容包含关键词,则拦截短信,使用abortBroadcast()方法终止广播传播。如果不满足以上条件,则放行该短信。

以上就是安卓手机短信拦截app的实现原理和详细介绍。


相关知识:
安卓12开启开发者模式
开发者模式是android系统提供的一个隐藏设置界面,主要为开发者提供了一些高级功能。例如,调试应用程序,更改系统设置等。在Android 12中,开启开发者模式相比之前的版本甚至更加简单,下面本文将为你详细介绍如何开启安卓12开发者模式。1. 打开设置应
2023-05-23
mac安卓app开发环境搭建
在现代移动互联网的时代,我们身边的设备越来越多,其中除了普遍的 iPhone,iPad 之外,Android 设备也是比较常见的。对于一个开发者来说,如果能够同时开发这两种平台,显然是非常有优势的。本文将介绍如何在 MAC 上搭建 Android 开发环境
2023-05-23
eclipse安卓开发软件
Eclipse是一个开源的集成开发环境(IDE),可以用于编写、调试和运行各种程序,特别适用于Java开发。Eclipse有很多插件可供扩展,其中最流行的是它的安卓插件,用于安卓应用程序开发。首先,下载并安装Eclipse IDE for Java Dev
2023-05-23
长沙开发安卓app电话
要开发安卓App,需要掌握Java编程语言和Android开发基础知识。以下是开发安卓App的一般步骤:1. 安装Android Studio,这是一款完整的集成开发环境,可以帮助您创建,测试和打包安卓应用程序。2. 学习Java编程语言,必须学习Java
2023-04-28
安卓微博app开发感想
安卓微博App的开发主要涉及以下几方面的知识:1. Java编程语言: 安卓开发主要使用Java编程语言进行应用程序的开发,需要掌握Java语言基础知识以及OOP思想。2. 安卓开发框架: 安卓开发需要使用Android SDK(Software Deve
2023-04-28
安卓开发app扫雷游戏
扫雷游戏是一种基于计算机的单人益智游戏,最初由微软公司在1990年代开发。随后,扫雷游戏已成为电脑预装软件,在桌面操作系统中广受欢迎。最近几年,扫雷游戏也逐渐移植到手机APP,成为了手机游戏市场的一款热门游戏。在安卓开发扫雷游戏时,需要考虑以下几个方面:1
2023-04-28
安卓app开发收费
安卓App开发收费指的是开发者在开发安卓App时会根据所提供的服务和功能对其进行定价。这种收费方式包括了为用户提供付费应用、购买内置应用程序的服务、广告收益等等。下面我们来具体了解一下这些收费方式以及它们的原理。1. 付费应用付费应用是一种直接的收费方式,
2023-04-28
安卓app开发工具排行
在安卓应用开发领域,有许多开发工具可供我们选择。在这里,我将为您列出目前最受欢迎和实用的安卓App开发工具,并带来相关的原理或详细介绍。1. Android StudioAndroid Studio是Google官方推出的集成开发环境(IDE),它的原理是
2023-04-28
如何用java开发安卓app
Java是安卓开发的主要语言,开发者可以使用Java代码开发安卓应用程序。下面是Java开发安卓应用的基本原理和详细介绍:1. 安卓SDK安卓SDK(Software Development Kit)是安卓应用程序开发的主要工具。它包含了开发所需要的各种工
2023-04-28
北京安卓app开发外包
Android是一种操作系统,主要针对智能手机和平板电脑设备。Android应用程序可以使用Java编程语言编写,基于Android应用程序开发工具包(SDK)完成。Android应用程序在Google Play等应用商店中很常见,这些应用程序可以提供各种
2023-04-28
从0开始开发安卓app要多久
从零开始开发一个安卓应用程序是一个相对复杂的过程,需要学习一定的编程知识和技能。本文将带你了解从零开始开发安卓应用程序的基本步骤和时间安排。当然,最终所花费的时间取决于你的学习速度和实际投入时间。以下是主要步骤和大致时间安排:1. 学习编程语言(4周 -
2023-04-28
一个安卓app的开发需要哪些技术
开发一个Android应用涉及许多技术和知识点。以下是这些技术的一个概述,供您参考。1. Java或Kotlin编程语言: Android应用开发需要熟悉Java或Kotlin编程语言。Java曾是Android开发的官方语言,但自从Google将Ko
2023-04-28
©2015-2023 安卓益APP Anzhuoe.com 蜀ICP备17007734号-1