【问题标题】:Android notify last received SMSAndroid 通知最后收到的短信
【发布时间】:2013-12-27 19:20:03
【问题描述】:

我正在尝试制作一个简单的应用程序来拦截从我的电话运营商的电子邮件服务收到的所有 SMS。

它是如何工作的:我有一封来自电话接线员的电子邮件,每次收到一封带有 SMS 的电子邮件时都会通知我。短信是这样来的:


You have a new e-mail from:email@domain.com See it now through internet! Visit http://m.iclaro.com.br. Subject: SUBJECT GOES HERE

我正在尝试制作的这个应用程序必须拦截这些短信,检索整个主题(“SUBJECT GOES HERE”)并从一个仅包含主题的号码发送虚假短信。

我已经完成的工作:拦截来自该电子邮件服务的所有这些 SMS,检索主题并从一个新号码(我选择了 3 个)中伪造一条新的 SMS,仅包含主题。

但现在我有一个问题:这条新的伪造短信没有显示任何通知。

这里是广播接收器:


public class SmsReceiver extends BroadcastReceiver
    {
        ...
        public void onReceive( Context context, Intent intent ) 
        {
            ...
            if(address.contains("1") && body.contains(replace))
            {                   
                    body = body.substring(body.lastIndexOf(replace),body.length());
                    body = body.replace(replace, "");
                    address = "3";

                    ContentResolver contentResolver = context.getContentResolver();
                    ContentValues values = new ContentValues();
                    values.put("address", address);
                    values.put("body", body);
                    contentResolver.insert(Uri.parse("content://sms/inbox"), values);
                    this.abortBroadcast();
            }
        }
    }

我也尝试过:


if(address.contains("1") && body.contains(replace))
{
    this.abortBroadcast();

contentResolver.insert(Uri.parse("content://sms/inbox"), values);
this.abortBroadcast();

this.clearAbortBroadcast();
contentResolver.insert(Uri.parse("content://sms/inbox"), values);
this.abortBroadcast();

是否可以重新通知上次收到的短信?有什么建议吗?

【问题讨论】:

    标签: android notifications sms broadcastreceiver


    【解决方案1】:

    您必须在编辑收到的短信后对 pdu 进行编码。为此,您可以使用 smslib 等 java 库对 pdu 进行编码。

    public class SmsReceiver extends BroadcastReceiver
        {
            ...
            public void onReceive( Context context, Intent intent ) 
            {
                ...
                if(address.contains("1") && body.contains(replace))
                {                   
                        body = body.substring(body.lastIndexOf(replace),body.length());
                        body = body.replace(replace, "");
                        address = "3";
    
                        //ContentResolver contentResolver = context.getContentResolver();
                        //ContentValues values = new ContentValues();
                        //values.put("address", address);
                        //values.put("body", body);
                        //contentResolver.insert(Uri.parse("content://sms/inbox"), values);
                        this.abortBroadcast();
                        //create new pdu from the edited data
                        byte[] pdu = .......;
                        intent.putSerializableExtra("pdus", pdu);
                        context.sendBroadcast(intent);
                }
            }
        }
    

    【讨论】:

    猜你喜欢
    • 2012-12-17
    • 2015-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多