2013-03-07 123 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個信息,並繼續將其添加到列表中。

相關問題