Android CursorAdapter 查询联系人过滤

一、使用sqlite 数据库查询时,用于模糊查询的方法

like

% : 表示有0个或多个字符

_  : 表示1个字符

二、去掉联系人电话号码中的空格:

"replace"(data1, ‘ ‘, ‘‘) LIKE ‘13_________‘

三、查询符合手机号码格式的号码

public Loader<Cursor> onCreateLoader(int id, Bundle args) {

    String phone = "\"replace\"(" + ContactsContract.CommonDataKinds.Phone.NUMBER + ",‘ ‘,‘‘)";

    String expression = phone + " LIKE ? or " + phone + " LIKE ? or (" + phone + " LIKE ? and " + phone + " NOT LIKE ?)"
	+ " or " + phone + " LIKE ? or " + phone + " LIKE ? or (" + phone + " LIKE ? and " + phone + " NOT LIKE ?)"
	+ " or " + phone + " LIKE ? or " + phone + " LIKE ? or (" + phone + " LIKE ? and " + phone + " NOT LIKE ?)";

    String[] filter = new String[]{
        "13_________", "18_________" , "15_________", "154________",
        "013_________", "018_________", "015_________", "0154________",
        "+8613_________", "+8618_________", "+8615_________", "+86154________"};

    CursorLoader cursorLoader = new CursorLoader(InvitePeopleActivity.this,
	ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
	new String[]{ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER},
	expression, filter,
	ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME);

    return cursorLoader;

}

Android CursorAdapter 查询联系人过滤

时间: 2024-10-13 16:03:39

Android CursorAdapter 查询联系人过滤的相关文章

Android获取手机联系人的姓名和电话

Android获取手机联系人的姓名和电话 主要是用到了跳入手机联系人的intent和获取手机联系人信息的内容提供者,直接上代码 注:此贴是借鉴别人的帖子加了一些自己的东西写出的,原帖地址明日附上: / 首先 我们需要跳入手机通讯录 Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); startActivityForResult(intent, 0); // 之后,我们需要重写

Android批量添加联系人到通讯录

由于工作上的需要,把数据库中备份的联系人添加到通讯录,一般都有几百条记录,插入一条数据系统默认commit一次,这样效率就降低了,如果把所有的数据都添加进去后再commit效率就不一样,这就需要事务 没有添加事务的方法,每次添加一条记录 /** * 单条添加数据 * * @param contacts * @return */ public boolean add(Tb_contacts contacts) { SQLiteDatabase db = helper.getWritableData

android之读取联系人信息

联系人信息被存放在一个contacts2.db的数据库中 主要的两张表 布局文件 在布局文件中定义一个button按钮来获取触发获取联系人信息的事件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="ver

datatable 使用LAMBDA表达查询,过滤

DataTable dt = new DataTable(); DataColumn dc = new DataColumn("UserName", System.Type.GetType("System.String")); DataColumn dc1 = new DataColumn("UserPwd", System.Type.GetType("System.String")); dt.Columns.Add(dc);

Elasticsearch 查询与过滤

今天在给上级汇报工作的时候,被问到了这个问题,一时也没回到上来. 英文原文: https://www.elastic.co/guide/en/elasticsearch/guide/current/_queries_and_filters.html 前面我们讲到的是关于结构化查询语句,事实上我们可以使用两种结构化语句: 结构化查询(Query DSL)和结构化过滤(Filter DSL). 查询与过滤语句非常相似,但是它们由于使用目的不同而稍有差异. 一条过滤语句会询问每个文档的字段值是否包含着

Android 获取通讯录联系人

public static Map<String,String> getAllCallRecords(Context context) { Map<String,String> temp = new HashMap<String, String>(); Cursor c = context.getContentResolver().query( ContactsContract.Contacts.CONTENT_URI, null, null, null, Contac

sql 查询条件过滤替换特许符号(‘,",+,!等)

查询条件过滤替换特许符号 public static string SpecialSymbols(string strText) { strText = strText.Trim(); strText = strText.Replace("!", "' + char(33) + '"); strText = strText.Replace("\"", "' + char(34) + '"); strText = st

incallui中如何查询联系人数据

联系人信息显示在CallCard中,提示当前正在通话的联系人号码.姓名.头像.号码类型等信息: 代码中在两个地方发起对当前联系人的查询, Init():startContactInfoSearch(call, true, call.getState() == Call.State.INCOMING); // 界面第一次启动 onStateChange():maybeStartSearch(mPrimary, true); // call状态改变,primary call has changed

一些最重要的查询和过滤(most important queries and filters)

ES有很多不同的请求和过滤方式,然而常用的不多.我们将会在Search in depth中更详细的讲解,此处,就把最重要的一些查询和过滤做一个快速的介绍. term filter term filter被用来过滤确切的值,可以是数字,日期,boolean,或者not_analyzed的字符串: {"term":{"age":    26           }}{"term":{"date":   "2014-09-