我正在制作短信应用程序并使用PhoneNumberUtils.compare()
正确处理电话号码格式。
public void GetMessages(String PhoneNumber)
{
Uri message = Uri.parse("content://sms/");
ContentResolver cr = this.getContentResolver();
Cursor c = cr.query(message, null, null, null, null);
if (c.getCount() > 0)
{
while (c.moveToNext())
{
String ContactNumber = c.getString(c.getColumnIndexOrThrow("address"));
if(PhoneNumberUtils.compare(ContactNumber, PhoneNumber))
{
//Match
}
}
}
}
上面的代码工作正常,我收到特定电话号码的消息。但是,在另一个地方(从我自己的数据库中检索消息)compare()
函数给出了奇怪的结果。以下是代码。
public void GetMessages(String Number)
{
String Query = "Select * FROM PhoneNumber";
SQLiteDatabase db = this.getReadableDatabase();
Cursor c = db.rawQuery(Query, null);
if (c.getCount() > 0)
{
while (c.moveToNext())
{
String DBNumber = c.getString(c.getColumnIndexOrThrow("PhoneNumber"));
if (PhoneNumberUtils.compare(Number, DBNumber));
{
//Match - Breakpoint set here
}
}
}
}
这是我在断点处得到的
DBNumber
和Number
不同,但compare()
给出了真实。请帮助!
这是我的logcat的一部分:
D/~~~﹕ DBNumber=0333357xxxx;PhoneNumber=+92332465xxxx;match=false
D/~~~﹕ DBNumber=0333357xxxx;PhoneNumber=+92332465xxxx;match=false
D/~~~﹕ DBNumber=0333357xxxx;PhoneNumber=+92332465xxxx;match=false
D/~~~﹕ DBNumber=0333357xxxx;PhoneNumber=+92332465xxxx;match=false
D/~~~﹕ DBNumber=0333357xxxx;PhoneNumber=+92332465xxxx;match=false
D/~~~﹕ DBNumber=0333357xxxx;PhoneNumber=+92332465xxxx;match=false
D/~~~﹕ DBNumber=0333357xxxx;PhoneNumber=+92332465xxxx;match=false
D/~~~﹕ DBNumber=0333357xxxx;PhoneNumber=+92332465xxxx;match=false
D/~~~﹕ DBNumber=0333357xxxx;PhoneNumber=+92332465xxxx;match=false
D/~~~﹕ DBNumber=0333357xxxx;PhoneNumber=+92332465xxxx;match=false
D/~~~﹕ DBNumber=0333357xxxx;PhoneNumber=+92332465xxxx;match=false