查询具有某一分组的所有联系人的ContactsContract.RawContacts._ID,代码如下 public static final String[] RAW_PROJECTION = new String[]{
     ContactsContract.Data.RAW_CONTACT_ID,
};
 
public static final String RAW_CONTACTS_WHERE = 
                ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID +"=?" +" and " + 
                ContactsContract.Data.MIMETYPE+ "=" + "'" + 
                ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE + "'" ; Cursor mMemberRawIds =rc.query(URI, RAW_PROJECTION,
                                                      RAW_CONTACTS_WHERE, 
                                                      new String[]{""+groupId},
                                                      "data1 asc");
是否有高手解释一下红色标注的部分的意思?我查找Sql的语法规则,好像没有找到SQL语句这种用的啊?多谢啦

解决方案 »

  1.   

    那个?所代表的是搜索条件,而那个搜索条件是new String[]{""+groupId}
    你这个条件只有一个groupId,所以不需要这么写,直接ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID=groupId就可以了,写Query的时候,new String那里填null
    如果是用模糊检索,包含一部分Id的话,就需要用的检索范围
    比如:Cursor mMemberRawIds =rc.query(URI, RAW_PROJECTION,
      RAW_CONTACTS_WHERE,  
      new String[]{"*"+groupId+"*"},
      "data1 asc");
      

  2.   

    "=?"中的?代表后面参数的值。不过一般都是直接 = 后面参数的值,将后面参数的值设为null.如你的例子可改为这样:
    把RAW_CONTACTS_WHERE变量中的"=?"改为"="+groupId;
    查询语句改为:
    Cursor mMemberRawIds =rc.query(URI, RAW_PROJECTION,
      RAW_CONTACTS_WHERE,  
      null, 
      "data1 asc");