这是我的代码
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中的输出相同
答案 0 :(得分:0)
使用equals
而不是==
比较字符串值。
将smsInboxCursor.getString(indexAddress).toString()=="6641234567"
更改为smsInboxCursor.getString(indexAddress).equals("6641234567")
,然后它应该注册为有效。
答案 1 :(得分:0)
要比较字符串,您需要使用equals
,==
将不起作用。
还要确保您正在编写需要比较的精确文本,因为空格也被认为是字符,可能会使比较不起作用。
因此,将... toString()=="6641234567"
更改为... toString().equals("6641234567")