SmsBroadcastReceiver的问题

问题描述 投票:0回答:1

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

我使用默认代码使我的.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”声明...如果没用就让我的别人...

一些信息?

java android if-statement sms
1个回答
0
投票

在您的代码中,您正在检查是否为真:

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

如果字符串与正则表达式匹配,则该方法匹配检查。

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

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

else if(smsBody.equals(case2))
© www.soinside.com 2019 - 2024. All rights reserved.