要拦截Android系统的短信广播,需要使用广播接收器来执行。以下是其中一种方式:
首先,需要在AndroidManifest.xml文件中注册一个广播接收器来监听系统短信广播:
<receiver android:name=".SmsBroadcastReceiver" android:exported="true">
<intent-filter android:priority="1000">
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
然后,创建广播接收器(Broadcast Receiver)。在onReceive方法中将广播设为有序广播,只有优先级别更高的广播接收器才能接收。
创建一个新类例如 SmsBroadcastReceiver
,然后填入以下代码:

public class SmsBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (Telephony.Sms.Intents.SMS_RECEIVED_ACTION.equals(intent.getAction())) {
for (SmsMessage smsMessage : Telephony.Sms.Intents.getMessagesFromIntent(intent)) {
String messageBody = smsMessage.getMessageBody();
String phoneNumber = smsMessage.getDisplayOriginatingAddress();
// 你的代码
}
// 中止广播,若你不希望短信继续被其他广播接收器接收到
abortBroadcast();
}
}
}
这会拦截收到的所有短信,然后在onReceive()方法中中止该广播。请注意,这可能会对用户的设备有些影响,因为他们可能会错过短信提醒,所以请确保在应用中明确告知用户你的应用将会拦截短信。
需要注意的是,从 Android 4.4 开始,只有默认的短信应用才能拦截短信,其他应用只能读取短信。如果你的应用仍然需要拦截短信,可能需要用户将其设置为默认的短信应用。
发布者:luotuoemo,转转请注明出处:https://www.jintuiyun.com/172040.html