Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果在android中收到短信时未触发If语句_Android_If Statement_Sms - Fatal编程技术网

如果在android中收到短信时未触发If语句

如果在android中收到短信时未触发If语句,android,if-statement,sms,Android,If Statement,Sms,我有一个if语句,如果短信来自某个特定的号码,它应该会触发,但是它从不触发。这是我的SMSReceiver.java: public String SMSMessage; public String incomingNumber; public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(SMS_RECEIVED)) { abortBroadca

我有一个if语句,如果短信来自某个特定的号码,它应该会触发,但是它从不触发。这是我的SMSReceiver.java:

public String SMSMessage;
public String incomingNumber;

public void onReceive(Context context, Intent intent) 
{
    if (intent.getAction().equals(SMS_RECEIVED)) 
    {
        abortBroadcast();
        Bundle bundle = intent.getExtras();
        if (bundle != null) 
        {
            Object[] pdus = (Object[])bundle.get("pdus");
            final SmsMessage[] messages = new SmsMessage[pdus.length];
            for (int i = 0; i < pdus.length; i++)
            {
                messages[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
            }
            SMSMessage = messages[0].getMessageBody();
            incomingNumber = messages[0].getOriginatingAddress();
            MainActivity.updatePowerUsageTitle(SMSMessage);
            MainActivity.updatePowerUsageSummary(incomingNumber);
            if (incomingNumber == "XXXXXXXXX" || incomingNumber == "XXXXXXXXXX")
            {  
                Toast.makeText(context, messages[0].getMessageBody(), Toast.LENGTH_SHORT).show();
                if (SMSMessage.contains("Turn"))
                {
                    //TODO: Set toast for incoming message
                    Toast.makeText(context, messages[0].getMessageBody(), Toast.LENGTH_SHORT).show();
                }
                else if (SMSMessage.contains("ref"))
                {
                    //TODO: Set refresh for switches
                }
                else if (SMSMessage.contains("power"))
                {
                    //Refresh power stats
                    int END = SMSMessage.length();
                    SMSMessage = SMSMessage.substring(6 , END);
                    MainActivity.updatePowerUsageTitle(SMSMessage);
                }
            }
        }
    }
}

显然,我没有把电话号码放在这里,但我知道这些号码是正确的。关于if语句没有触发的原因有什么线索吗?

请尝试将
字符串
.equals()
进行比较,因为这是在Java中比较
字符串
的正确方法<代码>=将比较引用。解释了两者的区别

if ("XXXXXXXXX".equals(incomingNumber) || "XYZ".equals(incomingNumber))

和往常一样,确保您在清单中拥有适当的权限。另外,如果这仍然不起作用,请在
onReceive()
的根目录下放置一条print语句,检查是否调用了该方法。

我现在觉得自己像个白痴。谢谢bunch@xAtaxia嘿,这是Java中最常见的错误之一。没问题:-)
if ("XXXXXXXXX".equals(incomingNumber) || "XYZ".equals(incomingNumber))