我编写了一个代码,用于从SMS数据库中提取唯一地址,然后是与该数字对应的第一条消息。
提取的代码如下:
Uri uri = Uri.parse("content://sms/");
String[] projection = new String[]{"DISTINCT address","thread_id","date","body"};
String grop ="address IS NOT NULL) GROUP BY (address";
Cursor c = getContentResolver().query(uri, projection, grop, null, null);
if(c.moveToFirst()) {
for(int i=0; i < c.getCount(); i++) {
SMSData sms = new SMSData();
sms.setThreadId(c.getString(c.getColumnIndexOrThrow("thread_id")).toString());
sms.setNumber(c.getString(c.getColumnIndexOrThrow("address")).toString());
sms.setBody(c.getString(c.getColumnIndexOrThrow("body")).toString());
sms.setDate((new Date(Long.parseLong(c.getString(c.getColumnIndexOrThrow("date")).toString()))).toString());
smsList.add(sms);
c.moveToNext();
}
}
c.close();
然而,相同的数字表示XXX只是从收件箱邮件中检索为XXX,而发件箱中的相同数字XXX被检索,其中国家/地区代码附加为+ 91XXX,因此在检索后我看到相同的两个条目数字XXX,其中一个用于XXX,另一个用于+ 91XXX。
即使附加了国家/地区代码,我也想要相同的数字,但只会检索行条目。
请帮助我继续使用此功能。 在此先感谢。
答案 0 :(得分:0)
我认为这应该有效。使用循环将要添加的数字与列表中已有的数字进行比较:
PhoneNumberUtils.compare(number1, number2);