Android通过电话号码和联系人姓名搜索联系人(两者同时进行)
我想和“LIKE”接线员同时通过电话号码和联系人姓名查询联系人,这是我的代码:Android通过电话号码和联系人姓名搜索联系人(两者同时进行),android,Android,我想和“LIKE”接线员同时通过电话号码和联系人姓名查询联系人,这是我的代码: ContentResolver contentResolver = context.getContentResolver(); Cursor cursor = contentResolver.query(ContactsContract.Contacts.CONTENT_URI, null, ContactsContract.Contacts.HAS_PHONE_NUMBER + "=1 AND ("
ContentResolver contentResolver = context.getContentResolver();
Cursor cursor = contentResolver.query(ContactsContract.Contacts.CONTENT_URI, null, ContactsContract.Contacts.HAS_PHONE_NUMBER + "=1 AND (" + ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + " LIKE '" + query + "%' OR " + ContactsContract.CommonDataKinds.Phone.NUMBER + " LIKE '%" + query + "%' OR " + ContactsContract.CommonDataKinds.Phone.NUMBER + " LIKE '%" + query + "%' ) ", null, ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + " ASC");
return cursor;
但是我的代码不起作用,它崩溃了,android说“data4”和“data1”列不存在。使用下面的代码按姓名查找联系人
public String findByName(Context context , String name) {
String result= null;
String selection = ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME+" like'%" + name +"%'";
String[] projection = new String[] { ContactsContract.CommonDataKinds.Phone.NUMBER};
Cursor c = context.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
projection, selection, null, null);
if (c.moveToFirst()) {
result= c.getString(0);
}
c.close();
if(result==null)
result= "This contact is not saved into your device";
return result;
}
使用加载器获得最快的结果
public Loader<Cursor> getContactCursor(Context context, Bundle args) {
Uri baseUri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
String filter = args != null ? args.getString("filter") : null;
if (filter != null && filter.length() > 0) {
return new CursorLoader(context,baseUri, null, "(display_name LIKE ?) OR (data1 LIKE ?)", new String[]{"%" + filter + "%","%" + filter + "%"}, null);
}else{
return new CursorLoader(context,baseUri, projection,null, null, null);
}
}
public Loader getContactCursor(上下文,绑定参数){
Uri baseUri=ContactsContract.CommonDataTypes.Phone.CONTENT\u Uri;
字符串过滤器=args!=null?args.getString(“过滤器”):null;
if(filter!=null&&filter.length()>0){
返回新的游标装入器(上下文,baseUri,null,”(类似于显示名称?)或(类似于数据1?),新字符串[]{“%”+过滤器+“%”,“%”+过滤器+“%”,null);
}否则{
返回新的游标装入器(上下文、baseUri、投影、null、null、null);
}
}