2012-07-05 44 views
0

我目前正在嘗試查詢所有聯繫人並將其存儲到數據庫中。但是,我意識到這個問題,如果我的聯繫人有多個號碼,它會返回相同的聯繫人姓名和其他多個號碼。但是如果我的聯繫人有電子郵件,查詢將複製相同的姓名和相同的號碼。我可以知道我該如何解決這個問題?我只想存儲一次名稱和編號。我不希望與電子郵件有任何關係。Android查詢和商店聯繫人重複號碼

我設法通過定義我只想要TYPE_MOBILE來獲得移動號碼。但是,我意識到,如果我的聯繫人使用Google +,則查詢會重複相同的姓名和相同的號碼。任何人都可以引導我沿着這條線嗎?謝謝!

這裏是我使用的代碼:

Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null, null); 
while (phones.moveToNext()) { 
    int phoneType = phones.getInt(phones.getColumnIndex(Phone.TYPE)); 
    if (phoneType == Phone.TYPE_MOBILE) 
    { 
      mobile = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DATA)); 
      mobile = mobile.replaceAll("\\s", ""); 
      id = phones.getString(phones.getColumnIndex(ContactsContract.Contacts._ID)); 
      name=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); 
      long idL = DbHelper.createContact(name, "", mobile, "", id); 
      if (idL > 0) { 
       mRowId = idL; 
      } 
    } 
    phones.close(); 
} 

回答

0

號碼不保存到你的數據庫。在Android上這樣做並不正確。 當你需要找到一個號碼查詢聯繫人姓名和搜索。因爲用戶可以改變關於聯繫人的內容,所以你的數據庫中會有舊的數據。

+0

因爲我正在嘗試做一個類似於Viber的聯繫人列表。如果聯繫人具有相同的應用,我正試圖在聯繫人旁邊顯示我的應用圖標。否則,你有任何其他建議嗎? :) – user1321096 2012-07-05 09:16:50

+0

所以,只保存聯繫人列表中的號碼。嘗試使用身份證號碼處理您的應用。如果你不想複製數字,可以將它們複製到一個數組列表中,並在獲取它們時檢查數組是否包含數字。之後,將數字ID保存到您的分機號碼 – bmavus 2012-07-05 17:18:23

+0

嗨,現在我可以檢查手機類型,然後保存手機號碼。但是我意識到,如果聯繫人使用Google +,該號碼仍會重複。有關如何解決此問題的任何想法?我會很快更新我的代碼。 – user1321096 2012-07-12 07:21:16

0
ArrayList<String> list =new ArrayList<String>(); 

在填充列表,你可以將它們保存後while循環

if(!list.contains(mobile)){ 
    list.add(mobile); 
} 

但是,我認爲保存數字到你的分貝。而不是保存他們保存他們的ID。