我想了解针对特定关键字拦截传入的 SMS 消息;例如,“嗨”,这样我就可以阅读其中包含“嗨”的短信,并在阅读完消息后将其删除,如果该消息不包含任何此类文本,则不会将其删除,而是保存在收件箱。
最佳答案
寻找广播接收器,这取决于手机上安装的应用程序,但您可以为您的应用程序提供收听消息的优先级。虽然,当显示通知时,消息不会在 SMS 数据库中,因此您需要使用 abortBroadcast() 来停止通知其他应用程序。请参见下面的示例:
public class MessageReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
Bundle pudsBundle = intent.getExtras();
Object[] pdus = (Object[]) pudsBundle.get("pdus");
SmsMessage messages =SmsMessage.createFromPdu((byte[]) pdus[0]);
Log.i(TAG, messages.getMessageBody());
if(messages.getMessageBody().contains("Hi")) {
abortBroadcast();
}
}
您需要在 list 中声明接收者,如下所示:
<receiver android:name="com.encima.smsreceiver.MessageReceiver" android:exported="true">
<intent-filter android:priority="999">
<action android:name="android.provider.Telephony.SMS_RECEIVED"></action>
</intent-filter>
</receiver>
最后,确保你在manifest中有RECEIVE_SMS的权限,希望对你有帮助!
关于android - 如何拦截带有特定文本的传入 SMS 消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6979540/