2015-09-23 164 views
3

我創建了一個小型活動,用手機中的電話號碼顯示所有聯繫人。但是,安裝了whatsapp的聯繫人有重複。例如,如果約翰是我的聯繫人名單,他有一個WhatsApp的帳戶以及,列表如下所示:複製我的聯繫人列表的WhatsApp聯繫人

...

傑克

約翰

約翰

JP

...

這是我的代碼將光標分配給鏈接到列表視圖的適配器。

Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI; 
    String sortOrder = ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + " ASC"; 
    final Cursor cursor = getContentResolver().query(uri, null, null, null, sortOrder); 

    String[] from = {ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER, ContactsContract.CommonDataKinds.Phone._ID}; 
    int[] to = {android.R.id.text1}; 
    adapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_multiple_choice, cursor, from, to, 0); 

EDIT 有了這個代碼,我確認,重複具有用於ContactsContract.CommonDataKinds.Phone.TYPE這意味着它是一個自定義的接觸(WHATSAPP)0值。其餘的是2,這意味着它是一個正常的聯繫。

我需要找出一個查詢它不使用其中ContactsContract.CommonDataKinds.Phone.TYPE == 0

回答

0

我知道這可能是有點晚了任何聯繫。但是我遇到了同樣的問題。

ContactsContract.CommonDataKinds.Phone.TYPE按照 android documentation指的不是它是否是自定義聯繫人,而是指它是什麼類型的聯繫人,即Mobile(2),Home(1)或Work(3)。 WhatsApp聯繫人將是一個2 - 移動。

我用下面的函數來刪除重複的(不知道是否有更好的方法):

private boolean checkDuplicate(String position) { 
    LinkedHashMap<String, Integer> map; 
    Integer testNull; 

    map=new LinkedHashMap<>(); 

    testNull=map.get(position); 
    if(testNull==null) { 
     testNull=1; 
     map.put(position, testNull); 
     return false; 
    } 
    else { 
     testNull=testNull+1; 
     if(testNull==2) { 
      return true; 
     } 
     else { 
      map.put(position, testNull); 
      return false; 
     } 
    } 
} 
相關問題