假设我的通话记录中有 100 个通话。我想找到他们被调用的唯一联系人(不是号码)。问题是,如果一个联系人有两个电话号码(例如,对于联系人 A,我有一个家庭号码和另一个手机号码),我将计算该联系人两次!
我尝试了以下。我正在阅读通话记录。然后对于每个通话记录号码,我调用以下自定义函数:
private String getContactID (String number)
{
String contactID = "";
ContentResolver context = getContentResolver();
/// number is the phone number
Uri lookupUri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI,Uri.encode(number));
String[] mPhoneNumberProjection = { PhoneLookup._ID };
Cursor cur = context.query(lookupUri,mPhoneNumberProjection, null, null, null);
try
{
if (cur.moveToFirst())
{
contactID = cur.getString(0);
return contactID;
}
}
finally
{
if (cur != null)
cur.close();
}
return contactID;
}
因此,我有一个带有联系人 ID 和通话时间戳的通话记录,并使用 Set 我得到了唯一的......上面的代码工作正常,但性能如果很差!我在新的 Google Nexus 4 中尝试过,大约需要 1600 毫秒!我不想考虑旧的智能手机...
有什么建议么?