androidduplicatescursorcontactscontractresolver

sql android ignore duplicate retrieving content


help me to fix this problem to remove duplicate contact that i get from Database

 cursor= getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,
                 ContactsContract.Data.MIMETYPE + "='" + ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE + "' AND " + ContactsContract.Data.DATA1 + "!=''",null,"upper("+ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + ") ASC");

Solution

  • use this code to contact list from mobile database and set on list view

    No duplicate data retreive.

    public void customgetContactList()
    {
        String SELECTION = "((" +
                ContactsContract.Data.DISPLAY_NAME + " NOTNULL) AND (" +
                ContactsContract.Data.DISPLAY_NAME + " != '"+checkDuplicacy+"' ))";
    
    
        Cursor cursor= getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,
                SELECTION,null,"upper("+ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + ") ASC");
    
        int ColumeIndex_ID = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone._ID);
            int ColumeIndex_DISPLAY_NAME = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME);
            int ColumeIndex_HAS_PHONE_NUMBER = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
    
        ArrayList<HashMap<String,String>> arrayList=new ArrayList<>();
        while (cursor.moveToNext()){
            String id = cursor.getString(ColumeIndex_ID);
            String name = cursor.getString(ColumeIndex_DISPLAY_NAME);
            String has_phone = cursor.getString(ColumeIndex_HAS_PHONE_NUMBER);
    
            //phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DATA));
            if (!name.equals(checkDuplicacy) && !has_phone.equals(checkDuplicacynumber))
            {
    
                HashMap<String,String> hashMap=new HashMap<>();//create a hashmap to store the data in key value pair
                hashMap.put("name",name);
                hashMap.put("phone",has_phone);
                arrayList.add(hashMap);
                String[] from = {"name","phone"};
                int[] to = {R.id.textViewName,R.id.textviewnumber};
                SimpleAdapter simpleAdapter=new SimpleAdapter(this,arrayList,R.layout.customtextviewforlist,from,to);
              //  SimpleCursorAdapter simpleCursorAdapter = new SimpleCursorAdapter(this,R.layout.customtextviewforlist,cursor,from,to);
    
                //startManagingCursor(cursor);
                contactListView.setAdapter(simpleAdapter);
                contactListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
    
    
                checkDuplicacy=name;
                checkDuplicacynumber=has_phone;
            }
        }
    }