【发布时间】:2015-01-17 23:58:40
【问题描述】:
我正在使用如下代码,在我的手机上它返回 4000 多行,但在我的手机上,我的联系人应用中有 295 个联系人。
这里发生了什么?我一直在阅读联系人数据库,但我还不够熟悉,无法弄清楚这一点。
谢谢!
final ContentResolver cr = getContentResolver();
final Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
List<Contact> contacts = new ArrayList<>();
final int nameIdx = cur.getColumnIndex(DISPLAY_NAME);
final int idIdx = cur.getColumnIndex(ContactsContract.Contacts._ID);
while (cur.moveToNext()) {
String name = cur.getString(nameIdx);
String id = cur.getString(idIdx);
contacts.add(new Contact(name, id));
}
cur.close();
【问题讨论】:
-
传递
null投影将返回所有列。 Docs -
是的。不过,我的问题是关于行,而不是列。
-
您可能希望使用
ContactsContract.Contacts.HAS_PHONE_NUMBER = 1作为您的selectionargument -
正如我在下面提到的,我不在乎他们是否有电话号码。我最终做的是使用 IN_DEFAULT_DIRECTORY=1 作为我的选择。
-
投反对票是因为为什么?