Android:获取来自通话记录的独特联系人

时间:2013-03-07 09:05:16

标签: android performance calllog

假设我的通话记录中有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;
}

那么我有一个calllog与联系ID和电话的时间戳和使用Set我得到独特... 上面的代码工作正常,但性能非常差!我在新的谷歌Nexus 4中尝试过它,大约需要1600毫秒!我不想考虑旧款智能手机......

有什么建议吗?

0 个答案:

没有答案