繁体   English   中英

无法将收到的短信文本与Android中的值进行比较

[英]Can't compare received SMS text to value in Android

我是编程的新手,所以请耐心等待。 在我做了一个SMS应用程序的几个教程后,我想在收到特定文本时执行特定任务,我通过将收到的文本与我已声明的值(代码)进行比较来完成此操作。 问题是这种情况从未发生过。


public class SmsReceiver extends BroadcastReceiver
{
    @Override
    public void onReceive(Context context, Intent intent) 
    {
        //---get the SMS message passed in---
        Bundle bundle = intent.getExtras();        
        SmsMessage[] msgs = null;
        String str = "";
        String code = "blue";
        String conf = "Ok";
        String inv = "Invalid";


    if (bundle != null)
    {
        //---retrieve the SMS message received---
        Object[] pdus = (Object[]) bundle.get("pdus");
        msgs = new SmsMessage[pdus.length];            
        for (int i=0; i<msgs.length; i++){
            msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);                

            str = msgs[i].getMessageBody().toString();
            //n = Integer.parseInt(str);

        }

        if (str == code)
          Toast.makeText(context, conf, Toast.LENGTH_SHORT).show();
         else 
            //str = Integer.toString(n);
            //Toast.makeText(context, str, Toast.LENGTH_SHORT).show();
          Toast.makeText(context, inv, Toast.LENGTH_SHORT).show();


    } 

  }

}

当我发送消息时,它总是显示inv变量(无效)。 我试图将“code”变量更改为整数,然后解析字符串以便我可以比较它; 在这种情况下它确实有效,但每当我收到一个字符串消息时,应用程序崩溃。 我认为这应该是一件简单的事情,但由于我不完全理解java,我无法弄明白。 我希望你能提供一些关于我能做什么的指导或建议。 提前致谢。

比较两个字符串时,您应该使用:

if (str.equals(code))

对于字符串相等性测试,Java不会覆盖equals运算符,就像它用于连接一样。

如果两个String变量都引用内存中的EXACT相同对象,则测试str == code仅计算结果为true。

String str1 =“hello”;

String str2 =“world”;

if(str1 == str2)//不适用于字符串,可用于整数

if(str1.equals(str2))//适用于字符串

if(str1.compareTo(str2)> 0)//适用于字符串

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM