在android上修改收到的短信

在android上修改收到的短信,android,sms,Android,Sms,我正在编写一个应用程序,它需要中断短信传入事件,然后修改短信正文。用户必须获得修改后的消息,而不是原始消息。使用BroadcastReceiver中断sms事件太简单以下是我的代码: @Override public void onReceive(Context context, Intent intent) { if(intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")){ //thi

我正在编写一个应用程序,它需要中断短信传入事件,然后修改短信正文。用户必须获得修改后的消息,而不是原始消息。使用BroadcastReceiver中断sms事件太简单以下是我的代码:

@Override
public void onReceive(Context context, Intent intent) {

    if(intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")){
        //this.abortBroadcast(); // stop notification to user
        Bundle bundle = intent.getExtras();           //---get the SMS message passed in---
        SmsMessage[] msgs = null;
        String sender = "";
        if (bundle != null){
            //---retrieve the SMS message received---
            try{
                Object[] pdus = (Object[]) bundle.get("pdus"); // PDU - "protocol description unit", which is the industry format for an SMS message
                msgs = new SmsMessage[pdus.length];
                // large message might be broken into many
                for(int i=0; i<msgs.length; i++){
                    msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
                    sender = msgs[i].getOriginatingAddress();
                    String msgBody = msgs[i].getMessageBody();
                    System.out.println("Msg Body: " + msgBody + " From: " + sender);
                    /// I need to modify msgBody
                }
            }catch(Exception e){
                e.printStackTrace();
            }
        }            

    }

}
但我无法更改消息正文。有没有办法做到这一点?
如果没有,有没有办法自己在收件箱中创建此短信并将通知发送给用户?

我想您需要的是注册一个具有最高优先级的接收者,因此当您的接收者接收到传入的短信时,执行abortBroadcast,这将确保正在处理的其他应用程序不会收到此短信,从而破坏您的更改

进一步说,您可以使用最新收到的SMS find row_id查询SMS数据库,即表中该条目的行id,即,现在它被缩减为用于修改文本的更新查询

在少数情况下,这可能需要系统内应用程序权限,在这种情况下,您的设备需要根目录。

请查看:[链接]