这是我的代码
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")