拦截传入的SMS消息并对其进行修改

use*_*110 8 iphone sms android xamarin.ios cordova

有没有办法拦截传入的SMS消息,然后在将其呈现给用户之前进行修改?

  • 可以在iPhone/Andriod上本地完成吗?
  • 可以使用PhoneGap完成吗?
  • 是否可以使用MonoTouch/Mono为Andriod完成?

如果对上述任何一项是肯定的,你能否提供一些指示?

我的首选解决方案优先顺序如下:

  1. PhoneGap的
  2. 本地人

谢谢大家!!

编辑:

对于想知道这个目的是什么的人来说,基本上我想根据内容在短信中加上一个单词作为"标签",所以当我查看短信时,我会看到类似"重要:等等等等"的内容而不仅仅是"等等等等".

Sha*_*ske 5

尝试这个 - //将此类注册为清单文件中的接收者,用于SMS_RECEIVED意图

  public class SmsReceiver 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)) {
              abortBroadcast();**this is prevent message to deliver to user**

            Bundle bundle = intent.getExtras();
            if (bundle != null) {
                // get sms objects
                Object[] pdus = (Object[]) bundle.get("pdus");
                if (pdus.length == 0) {
                    return;
                }
                // large message might be broken into many
                SmsMessage[] messages = new SmsMessage[pdus.length];
                StringBuilder sb = new StringBuilder();
                for (int i = 0; i < pdus.length; i++) {
                    messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
                    sb.append(messages[i].getMessageBody());
                }
                String sender = messages[0].getOriginatingAddress();
                String message = sb.toString();
                Toast.makeText(context, message, Toast.LENGTH_SHORT).show();

               SmsManager sms = SmsManager.getDefault();
               sms.sendTextMessage(phoneNumber, null, message, null, null);//phone number will be your number. 
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


Dim*_*nov 2

当然!iOS 上最简单的方法就是在 SMS 数据库上创建触发器 - /var/mobile/Library/SMS/sms.db

CREATE TRIGGER AFTER INSERT ON message 
Run Code Online (Sandbox Code Playgroud)

然后更新记录!

更高级的方法是挂钩私有方法,但我现在不会深入探讨,您只需要探索这些方法:)

顺便说一句,你无论如何都需要一个越狱设备