我正在尝试根据联系人的 id 获取光标以获取联系人列表。我不太确定如何将“IN”语句与参数数组一起使用。我目前所拥有的会导致错误。
public Cursor GetContacts(String[] ids)
{
ContentResolver cr = getContentResolver();
try
{
Uri uri = ContactsContract.Contacts.CONTENT_URI;
String[] projection = new String[] {
ContactsContract.Contacts._ID,
ContactsContract.Contacts.DISPLAY_NAME,
ContactsContract.Contacts.HAS_PHONE_NUMBER
};
String where = ContactsContract.Contacts._ID + " IN ?";
String[] selectionArgs = ids;
String sortOrder = ContactsContract.Contacts.DISPLAY_NAME;
return cr.query(uri, projection, where, selectionArgs, sortOrder);
}
catch (Exception ex)
{
String message = ex.getMessage();
Log.e("mine", "Error: " + message, ex);
return null;
}
错误:“?”附近:语法错误(代码 1):,编译时: SELECT _id, display_name, has_phone_number FROM view_contacts WHERE ((1)) AND ((_id IN ?)) ORDER BY display_name
我没有对此进行测试,但我认为您需要将 id 压缩为单个逗号分隔的字符串,以便将其插入到您的查询中。
public Cursor GetContacts(String[] ids)
{
ContentResolver cr = getContentResolver();
try
{
Uri uri = ContactsContract.Contacts.CONTENT_URI;
String[] projection = new String[] {
ContactsContract.Contacts._ID,
ContactsContract.Contacts.DISPLAY_NAME,
ContactsContract.Contacts.HAS_PHONE_NUMBER
};
String where = ContactsContract.Contacts._ID + " IN (?)";
String[] selectionArgs = {StringUtils.join(ids, ", ")};
String sortOrder = ContactsContract.Contacts.DISPLAY_NAME;
return cr.query(uri, projection, where, selectionArgs, sortOrder);
}
catch (Exception ex)
{
String message = ex.getMessage();
Log.e("mine", "Error: " + message, ex);
return null;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)