2013-03-07 121 views
0

可以说我在通话记录中有100个电话。我想找到他们被称为唯一的联系人(不是数字)。 问题是,如果一个联系人有两个电话号码(例如,对于联系人A,我有一个家庭号码,另一个号码是手机号码),我会将该联系人统计两次!Android:从通话记录中获取唯一的联系人

我尝试了以下。 我正在阅读通话记录。然后呼叫日志我叫下面的自定义功能中的各个号码:

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和呼叫的时间戳的calllog并使用一组我得到的唯一... 以上代码工作正常,但性能如果很差!我在一个新的谷歌Nexus 4中试用了它,它大约需要1600毫秒!我不想考虑更旧的智能手机...

有什么建议吗?

+0

这个问题似乎正在考虑你的问题http://stackoverflow.com/questions/8654904/group-by-in-contentresolver-in-ice-cream-sandwich – 2013-03-07 09:44:05

回答

0

使用后台线程延迟加载 ListView中的信息。

最初只抓取约10个结果并将它们显示在列表中。这应该发生得很快。之后,在后台线程中,一次获取10个信息,并继续将其添加到列表中。

相关问题