首先,你需要对Android的基本编程和通讯机制有一定了解。以下是一个基础的短信拦截器的代码实例:
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.widget.Toast;
public class SmsInterceptor extends BroadcastReceiver {
private static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED";
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(SMS_RECEIVED)) {
Bundle bundle = intent.getExtras();
if (bundle != null) {
Object[] pdus = (Object[]) bundle.get("pdus");
final SmsMessage[] messages = new SmsMessage[pdus.length];
for (int i = 0; i < pdus.length; i++) {
messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
}
if (messages.length > -1) {
final String messageBody = messages[0].getMessageBody();
final String phoneNumber = messages[0].getOriginatingAddress();
Toast.makeText(context, "Message from " + phoneNumber + "n Message body: " + messageBody, Toast.LENGTH_LONG).show();
// Add your logic here to block or not to block the message
// If you want to block then use below code
if (phoneNumber.equals("PHONE_NUMBER_TO_BLOCK")) {
abortBroadcast();
}
}
}
}
}
}
上述代码就是一个基本的短信拦截器。它会在接收到短信时,进行拦截并读取其内容。你也可以在这里加入你自己的拦截逻辑,比如根据发送者的电话号码,或者短信内容来判断是否要拦截这条短信。这里,提供了一个简单的例子,就是如果发送者的电话号码是”PHONE_NUMBER_TO_BLOCK”,那么就拦截这条短信。
注意的是,拦截短信需要用户授权你的应用有读取短信的权限。当用户第一次安装你的应用时,系统会提示用户是否给予该权限。
如果用户同意,那么你的应用就可以开始拦截短信了。
另外,上述代码只能在 Android 4.4 以下的系统中有效。从 Android 4.4 开始,Google 更改了短信的访问权限,只有默认的短信应用才能接收到短信广播。所以,如果你要在更高版本的 Android 系统中使用这个代码,那么你需要让用户将你的应用设置为默认的短信应用。或者,你可以寻求其他方法来实现短信拦截的功能。
发布者:luotuoemo,转转请注明出处:https://www.jintuiyun.com/169476.html