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



这是我的代码

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()进行调试重搜索,它会给我这个,结果与我的条件相同

这也是我应用的观点

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

这对我来说很奇怪这有什么解释吗?因为我可以看到我在if语句中进行的比较与logcat 中的输出相同

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

smsInboxCursor.getString(indexAddress).toString()=="6641234567"更改为smsInboxCursor.getString(indexAddress).equals("6641234567"),然后它应该注册它可以工作。

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

此外,请确保您正在编写需要进行比较的精确文本,因为空格也被视为字符,可能会使比较不起作用。

所以,改变。。。toString()=="6641234567"到。。。toString().equals("6641234567")

最新更新