用ContentProvider查询通讯录和运用事务在ContentProvider操作上
来源:互联网 发布:linux scp 传输文件夹 编辑:程序博客网 时间:2024/06/06 16:27
import java.util.ArrayList;import java.util.Collections;import android.content.ContentProviderOperation;import android.content.ContentResolver;import android.content.OperationApplicationException;import android.database.Cursor;import android.net.Uri;import android.os.RemoteException;import android.test.AndroidTestCase;/** * raw_contacts * data * mimetype * 三张表关联的 * * 由于在查询和插入的时候data和mimetype是自动关联的 * * data表中的mumetype_id和mimetype表中的_id是关联的 * 所以插入和查询的时候不用管mimetype表的设值 * * 查询data表中的mimetype_id列的时候,显示的数据就是mimetype表中对应id的mimetype属性 * 插入data表中数据的时候,mimetupe_id列写mimetype属性就会自定将mimetype_id转换成相应的列 */public class TestContactRead extends AndroidTestCase {private Uri dataUri = Uri.parse("content://com.android.contacts/data");private Uri rawContactsUri = Uri.parse("content://com.android.contacts/raw_contacts");/** * 查询通讯录的姓名,电话,邮箱 */public void testContactRead(){ContentResolver resolver = getContext().getContentResolver();Cursor rawContactsCursor = resolver.query(dataUri, new String[]{"_id"}, null, null, null);while(rawContactsCursor.moveToNext()){String id = rawContactsCursor.getString(0);Cursor dataCursor = resolver.query(dataUri, new String[]{"data1","mimetype"}, "raw_contact_id=?", new String[]{id+""}, null);while(dataCursor.moveToNext()){String data1 = dataCursor.getString(dataCursor.getColumnIndex("data1"));String mimetype = dataCursor.getString(dataCursor.getColumnIndex("mimetype"));if("vnd.android.cursor.item/name".equals(mimetype)){System.out.println("姓名:"+data1);}else if("vnd.android.cursor.item/phone_v2".equals(mimetype)){System.out.println("电话:"+data1);}else if("vnd.android.cursor.item/email_v2".equals(mimetype)){System.out.println("邮箱:"+data1);}}}}/** * 用内容提供者进行一个事务操作(添加通讯录记录操作) */public void testContactWrite() throws RemoteException, OperationApplicationException{//内容提供者的一个添加操作ContentProviderOperation operation1 = ContentProviderOperation.newInsert(rawContactsUri).withValue("_id", null)//设置要添加的数据(参数一:列名,参数二:值).build();ContentProviderOperation operation2 = ContentProviderOperation.newInsert(dataUri).withValueBackReference("raw_contact_id", 0)//用同组的第一个操作的返回值最为raw_contact_id的value插入.withValue("mimetype", "vnd.android.cursor.item/name").withValue("data1", "xxc").build();ContentProviderOperation operation3 = ContentProviderOperation.newInsert(dataUri).withValueBackReference("raw_contact_id", 0).withValue("mimetype", "vnd.android.cursor.item/phone_v2").withValue("data1", "150987654321").build();ContentProviderOperation operation4 = ContentProviderOperation.newInsert(dataUri).withValueBackReference("raw_contact_id", 0).withValue("mimetype", "vnd.android.cursor.item/email_v2").withValue("data1", "xxc@qq.com").build();//存放内容提供者的操作的集合ArrayList<ContentProviderOperation> operations = new ArrayList<ContentProviderOperation>();//将操作添加到集合里,第一个参数是集合,第二个参数是可变参数(内容提供者的操作)Collections.addAll(operations, operation1,operation2,operation3,operation4);//执行集合里的所有操作getContext().getContentResolver().applyBatch("com.android.contacts", operations);}}
0 0
- 用ContentProvider查询通讯录和运用事务在ContentProvider操作上
- ContentProvider操作通讯录
- ContentProvider读取通讯录和通话记录
- Android用ContentProvider开发通讯录
- Android之操作通讯录数据ContentProvider
- Android ContentProvider(类容提供者)之操作通讯录联系人 添加查询联系人
- 【Android基础知识】ContentProvider(三)使用ContentResolve查询和修改通讯录
- ContentProvider访问通讯录
- 通过ContentProvider查看通讯录
- Android中通过ContentProvider和ContentResolver对通讯录的读取与操作
- 07 - 数据操作三:ContentProvider内容提供者以及通讯录操作 组件2 ContentProvider
- ContentProvider
- ContentProvider
- ContentProvider
- ContentProvider
- contentProvider
- ContentProvider
- ContentProvider
- C/C++之间的那些事
- 公开的RTSP地址
- uml学习入门
- OpenLuGl V1.0 使用说明
- 通过xib加载UITableViewCell的新方式
- 用ContentProvider查询通讯录和运用事务在ContentProvider操作上
- 数据结构实验:哈希表
- OJ_1104 整除问题
- ios app 未发布前进行大规模测试的一些思路及做法
- Flappy Bird电脑版下载|好玩的像素鸟!!
- Bipartite graph/network学习
- 支付宝快捷登陆集成时不能跳转到ruturn_url.jsp页面
- Centos 6.4 上源码安装 kamailio 4.1
- Git常用命令