contentresolver(contentresolver用什么方法查询content)
ContentResolver 是 Android 提供的一种访问内容提供者的方式,它可以提供访问各种数据,如音频、视频、图片、短信和通讯录等。ContentResolver 可以查询、插入、更新和删除数据,本文将介绍在 Android 中 ContentResolver 的使用方法。
ContentResolver 单表查询数据

ContentResolver 查询数据的方式通过执行查询语句,下面是查询通讯录表中所有联系人姓名和电话的代码片段。
首先创建一个 Uri,代表我们要查询的表。
Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
接着创建一个查询语句。
String[] projection = {ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER};
这里的 projection 参数是指我们要查询所有联系人姓名和电话号码,定义成数组形式。
然后执行 SQL 查询语句,调用 ContentProvider 中的 query 方法。
Cursor cursor = getContentResolver().query(uri, projection, null, null, null);
这一步会返回一个 Cursor 对象,可以通过遍历 Cursor 来获取数据。
ContentResolver 联表查询数据

当需要查询多张表中的数据时,就需要联表查询。例如,我们希望查询联系人表和联系人电话表中的信息,下面是查询联系人姓名、电话、邮箱的代码片段。
首先定义一个 Uri,代表要查询的两张表。
Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
然后定义 SQL 查询语句。
String[] projection = {ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER, ContactsContract.CommonDataKinds.Email.DATA};
projection 字段的值是要查询的列名,这里查询的是联系人姓名、电话、邮箱。
接着定义 SQLiteDatabase 中的 join 语句,用于联表查询。
String join = ContactsContract.CommonDataKinds.Phone.CONTACT_ID + \"=\" + ContactsContract.CommonDataKinds.Email.CONTACT_ID;
这个 join 语句是针对两个表中都有 CONTACT_ID 这一列的表来连接的,最后调用 ContentProvider 中的 query 方法,获取 Cursor 对象。
Cursor cursor = getContentResolver().query(uri, projection, join, null, null);
最后遍历 Cursor 对象,获取数据。
ContentResolver 插入数据

ContentResolver 还提供了插入、更新和删除数据的方法。例如,我们需要插入一条新的联系人信息,下面是插入数据的代码片段。
首先创建一个 ContentValues 对象,用于存储要插入的数据。
ContentValues values = new ContentValues();
接着设置要插入的数据,以通讯录表中的姓名和电话为例。
values.put(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, \"Tom\");
values.put(ContactsContract.CommonDataKinds.Phone.NUMBER, \"1234567890\");
然后调用 ContentResolver 的 insert 方法,将数据插入到通讯录表中。
Uri uri = getContentResolver().insert(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, values);
insert 方法返回一个 Uri 对象,代表新插入的数据。
ContentResolver 更新数据

如果需要更新数据,例如更新 Tom 的电话号码。下面是更新数据的代码片段。
首先创建一个 ContentValues 对象,设置要更新的数据。
ContentValues values = new ContentValues();
values.put(ContactsContract.CommonDataKinds.Phone.NUMBER, \"0987654321\");
然后调用 ContentResolver 的 update 方法,更新数据。
Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
String where = ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + \" = ?\";
String[] whereArgs = {\"Tom\