SmsBroadcastReceiver的问题

时间:2018-03-06 15:00:42

标签: java android if-statement sms

首先,不是母语为英语的人。

我使用默认代码使我的.java工作...所以当它们来的时候用最新的短信刷新...

但我想使用它们......类似于以下示例:

public void onReceive(Context context, Intent intent) {
    Bundle intentExtras = intent.getExtras();

    if (intentExtras != null) {

                Object[] sms = (Object[]) intentExtras.get(SMS_BUNDLE);
                String smsMessageStr = "";
                for (int i = 0; i < sms.length; ++i) {
                    String format = intentExtras.getString("format");
                    SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) sms[i], format);
                    String address = smsMessage.getOriginatingAddress();
                    String smsBody = smsMessage.getMessageBody().toString();

                    String case1 = "@#A";
                    String case2 = "@#*";


                    if(smsBody.matches(case1))
                            {
                                smsMessageStr += "De: " + address + "\n";
                                smsMessageStr += "Este mensaje es generado por el mensaje generico recibido,'@#A'" + "\n";
                            }
                    else if(smsBody.matches(case2))
                        {
                        smsMessageStr += "De: " + address + "\n";
                        smsMessageStr += "Este mensaje es generado por el mensaje generico recibido,'@#*'" + "\n";
                        }
                    else
                    {
                        smsMessageStr += "De: " + address + "\n";
                        smsMessageStr += smsBody + "\n";
                    }
                }

                if (MainActivity.active) {
                    MainActivity inst = MainActivity.instance();
                    inst.updateInbox(smsMessageStr);
                } else {
                    Intent i = new Intent(context, MainActivity.class);
                    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    context.startActivity(i);
                }

如果匹配,它与“if(smsBody.matches(case1))”完美配合,但如果我发送带有smsbody == case2的msg,它只是给我“else”声明...制作我的否则如果没用......

一些信息?

1 个答案:

答案 0 :(得分:0)

在您的代码中,您正在检查是否属实:

String case2 = "@#*";
else if(smsBody.matches(case2))

方法 匹配 检查字符串是否与正则表达式匹配。

&#34; *&#34;是正则表达式的特殊字符。我不知道你的情况是什么是smsBody,但可能是因为&#34; *&#34;字符,它使这个陈述错误。

如果你只是想看看是否是完全相同的字符串,我建议你使用方法equals:

else if(smsBody.equals(case2))