Android; I only have 2 contacts, yet I can obtain 5 from a query, why?

前端 未结 3 900
-上瘾入骨i
-上瘾入骨i 2020-12-22 06:54

I have setup 2 test contacts in my emulator.

I\'m running the following query, it should pick them both out, populate my domain object, and add to a list. The output

相关标签:
3条回答
  • 2020-12-22 07:31

    You are querying ContactsContract.Data, which is a generic container that holds a list of various contact details, such as phone numbers, postal codes etc.. You must filter the results for the rows whose ContactsContract.Data.MIMETYPE column equals StructuredPostal.CONTENT_ITEM_TYPE:

    So change the query to:

    Cursor cursor = cr.query(ContactsContract.Data.CONTENT_URI,
         null, null, ContacsContract.Data.MIMETYPE +  "='" + 
    ContactsContract.StructuredPostal.CONTENT_ITEM_TYPE + "'", null);
    

    See ContactsContract.Data

    0 讨论(0)
  • 2020-12-22 07:31

    a contact that is registered to multiple groups will show up multiple times if you query the Uri CONTENT_URI = ContactsContract.Data.CONTENT_URI

    Add this to your SELECTION:

     + ContactsContract.Data.DATA1 + " = 1 " ;  //show only contacts in group 1
    
    0 讨论(0)
  • 2020-12-22 07:39

    After API 21 We Write this Query for remove contact duplicacy.

    String select = ContactsContract.Data.HAS_PHONE_NUMBER + " != 0 AND " + 
    ContactsContract.Data.MIMETYPE
                    + " = " + ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE + " 
    AND "+ ContactsContract.Data.RAW_CONTACT_ID + " = " + 
    ContactsContract.Data.NAME_RAW_CONTACT_ID;
    
    Cursor cursor = mContent.query(ContactsContract.Data.CONTENT_URI, null, select, 
     null, null);
    
    0 讨论(0)
提交回复
热议问题