Android游标查询中的复杂WHERE条件

时间:2011-09-16 17:02:16

标签: java android cursor where

我想查询联系人数据并检索具有以下条件的联系人姓名和电话号码:如果联系人有手机号码,则选择该号码,否则选择联系人拥有的任何号码/第一个号码。是否可以在游标查询中制定此条件,或者我是否必须在自定义游标适配器中执行此操作?

这是我目前的代码。它工作正常,但它检索所有联系人的所有数字,因此如果一个人有多个联系人,我会得到重复的名称。

private String WHERE_CONDITION = ContactsContract.Data.MIMETYPE + " = '" +
ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE + "'";
private String[] PROJECTION = {ContactsContract.Data.DISPLAY_NAME,
ContactsContract.Data.DATA1, ContactsContract.Data._ID };
private String SORT_ORDER = ContactsContract.Data.DISPLAY_NAME;
cursor = this.getContentResolver().query(
ContactsContract.Data.CONTENT_URI, PROJECTION, WHERE_CONDITION, null, SORT_ORDER);

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

将这种逻辑放在Java中会更容易和简单。只需检索所有数字并选择您需要的数字。通常,您最多可以有3个数字,可能是5.在任何情况下,开销都会非常低。