Android传入短信弹出窗口

时间:2013-12-08 12:44:39

标签: android sms

我想将String sms电话号码(传入短信)与String Studentno(变量)匹配。如果成功,我如何匹配并通知弹出消息。这是我的代码:

public void onReceive( Context context, Intent intent ) 
{
    // Get SMS map from Intent
    Bundle extras = intent.getExtras();

    String messages = "";
    String address = "";
    String studentsno = "+0999234678";
    String no;
    if ( extras != null )
    {
        // Get received SMS array
        Object[] smsExtra = (Object[]) extras.get( SMS_EXTRA_NAME );

        // Get ContentResolver object for pushing encrypted SMS to incoming folder
        ContentResolver contentResolver = context.getContentResolver();

        for ( int i = 0; i < smsExtra.length; ++i )
        {
            SmsMessage sms = SmsMessage.createFromPdu((byte[])smsExtra[i]);

            String body = sms.getMessageBody().toString();
            address = sms.getOriginatingAddress();

            messages += "SMS from " + address + " :\n";                    
            messages += body + "\n";

            no  = sms.getOriginatingAddress().toString();

            // Here you can add any your code to work with incoming SMS

            if(no  == studentsno){
                Toast.makeText( context, "SUCCESS", Toast.LENGTH_LONG ).show();
            }

            // I added encrypting of all received SMS 
            putSmsToDatabase( contentResolver, sms );
        }

        // Display SMS message
        Toast.makeText( context, messages, Toast.LENGTH_SHORT ).show();
    }
}

这是我的问题。如何匹配2个字符串以显示弹出消息? :

if(no  == studentsno){
    Toast.makeText( context, "SUCCESS", Toast.LENGTH_LONG ).show();
}

2 个答案:

答案 0 :(得分:0)

尝试

if(no.equals(studentsno))

而不是

if(no == studentsno)

编辑:长话短说, String.equals()将比较给定字符串的值是否相等(这是您所需要的)。

== 将检查比较对象是否指向完全相同的String对象。因此,即使比较字符串具有相同的值,它们引用相同的String对象。

答案 1 :(得分:0)

在Java中,所有字符串都是对象。将==运算符与对象一起使用时,正在测试两个对象是否是同一个对象

由于string interning,字符串可能是同一个对象,但通常不是,并且您无法对此产生影响。

Java Object类实现了一个equals方法,它只测试两个对象是否是同一个对象。从Object继承的任何类都可以重写此方法以提供它自己的相等性测试。 string通过覆盖equals方法来测试两个字符串(相同的对象或不同的对象,无关紧要)是否包含相同的内容

因此,在测试两个字符串是否具有相同内容时,您应该使用string1.equals(string2)

http://en.wikipedia.org/wiki/String_interning