5

我无法在我的应用程序中准确显示那些联系人,这些联系人位于我的手机通讯录中。

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

  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);
    

最后一个提供了最好的结果,但没有一个查询是真正令人满意的!:( 我在不同的设备上测试了所有这些,但始终无法准确获得电话簿中的联系人数量。

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


以下是我的测试结果:

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

| 设备 \ 选择 | 电话簿| 没有 (1) | 可见组 (2) | 目录。默认 (3) |

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

| 银河S | 288             | 302 | 288                       | 288                           |

| 连结 4 | 61              | 196 | 60 | 61                            |

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

| 连结 5 | 109            | 168 | 108 | 109                          |

| 银河S3 | 124            | 124     | 2 | 124                          |

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

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

4

0 回答 0