Android:获取本地地址簿的所有联系人

时间:2014-06-04 10:54:19

标签: android android-contacts contactscontract contact-list

我在我的应用中显示那些联系人时遇到问题,这些联系人位于我手机的地址簿中。

从谷歌联系人应用程序中我发现了许多不同的版本,如何查询这些联系人:

  1. 不使用选择

    Uri uri = ContactsContract.CONTACT.CONTENT_URI;
    getActivity().getContentResolver().query(uri,PROJECTION, null, null, null);
    
  2. 仅使用可见群组的联系人== 1

    Uri uri = ContactsContract.CONTACT.CONTENT_URI;
    String selection = Contacts.IN_VISIBLE_GROUP + "=1"
    getActivity().getContentResolver().query(uri,PROJECTION, selection, null, null);
    
  3. 或者使用目录查询参数

    Uri uri = Contacts.CONTENT_URI.buildUpon().appendQueryParameter(ContactsContract.DIRECTORY_PARAM_KEY, String.valueOf(Directory.DEFAULT)).build();
    getActivity().getContentResolver().query(uri, PROJECTION, null, null, null);
    
  4. 最后一次提供最佳结果,但没有任何查询真正令人满意! :( 我在不同的设备上测试了所有这些,但却无法准确获得电话簿中的联系人数量。

    有人有想法,为什么没有查询适用于所有设备?


    以下是我的测试结果:

      

    =============================================== ==================

         

    |设备\选择| 电话簿 |不(1)|可见组(2)| Directory.Default(3)|

         

    =============================================== ==================

         

    | Galaxy S | 288 | 302 | 288 | 288 |

         

    | Nexus 4 | 61 | 196 | 60 | 61 |

         

    | Xperia Go | 32 | 46 | 32 | 33 |

         

    | Nexus 5 | 109 | 168 | 108 | 109 |

         

    | Galaxy S3 | 124 | 124 | 2 | 124 |

         

    | Xperia Z | 157 | 254 | 156 | 180 |

         

    =============================================== ==================

0 个答案:

没有答案