如何比较if语句中的字符串?

时间:2018-11-04 18:40:02

标签: java android android-studio

这是我的代码

public void refreshSmsInbox() {

    ContentResolver contentResolver = getContentResolver();
    Cursor smsInboxCursor = contentResolver.query(Uri.parse("content://sms/inbox"), null, null, null, null);
    int indexBody = smsInboxCursor.getColumnIndex("body");
    int indexAddress = smsInboxCursor.getColumnIndex("address");
    if (indexBody < 0 || !smsInboxCursor.moveToFirst()) return;
    arrayAdapter.clear();
        do {
            if (smsInboxCursor.getString(indexAddress).toString()=="6641234567") {

                String str = "SMS From:" + smsInboxCursor.getString(indexAddress) +
                        "\n" + smsInboxCursor.getString(indexBody) + "\n";
                arrayAdapter.add(str);
            }
            else {
                String str = "It doesnt work";
                arrayAdapter.add(str);
            }
            Log.d("Phone Number",smsInboxCursor.getString(indexAddress));
        } while (smsInboxCursor.moveToNext());

}

我想制作一个在某个电话号码向您发送短信时弹出的应用程序,我已经使该应用程序读取了短信,但是当我尝试使该应用程序仅显示来自特定号码的消息时,它不会输入,但是我不知道为什么我要从smsInboxCursor.getString(indexAddress).toString()进行调试resaearh,它给了我this ,结果与我的情况相同

here也是我的应用视图

here是我删除if语句时的视图

这对我来说很奇怪。对此有一个解释吗?因为我可以看到在if语句中所做的比较与logcat中的输出相同

2 个答案:

答案 0 :(得分:0)

使用equals而不是==比较字符串值。

smsInboxCursor.getString(indexAddress).toString()=="6641234567"更改为smsInboxCursor.getString(indexAddress).equals("6641234567"),然后它应该注册为有效。

答案 1 :(得分:0)

要比较字符串,您需要使用equals==将不起作用。

还要确保您正在编写需要比较的精确文本,因为空格也被认为是字符,可能会使比较不起作用。

因此,将... toString()=="6641234567"更改为... toString().equals("6641234567")