ContentProvider学习心得(中)--通过单元测试的方式完成对通讯录内容的操作
来源:互联网 发布:mysql 子查询效率 编辑:程序博客网 时间:2024/06/10 13:08
在基本了解了对内容提供者的操作之后,可以通过几个小例子来训练自己的所学。在很多应用中都需要访问通讯录,因此在这里我们通过单元测试和通讯录的内容提供者完成对通讯录中数据的操作,在通讯录数据库中有很多表,在这个例子中我们需要关注的是data,raw_contacts,mimetypes这三个表,data表格raw_contacts两个表通过raw_contact_id字段关联,关于表中的字段,在通讯录URI详解中有介绍,mimetypes这个表指定data表中,每一条记录所对应的含义,例如“vnd.android.cursor.item/name”指定了data表中相应行记录的是联系人姓名的相关信息。同时需要指出的是,在添加记录的时候,需要指定添加的每条记录类型是什么,因此需要ContentValues中绑定mimetype字段,其中的值可以在mimetypes表中查询,在将记录插入到数据库之后,数据库会自动的根据mimetype的值设定data中记录的mimetype_id。
下面一共有个测试方法,在第一种测试方法中,联系人的每一个信息都是分开添加的,第二种测试方法中,采用批处理的方法来完成联系人的添加。
下面是测试的代码
package com.example.test;import java.util.ArrayList;import android.content.ContentProvider;import android.content.ContentProviderOperation;import android.content.ContentResolver;import android.content.ContentUris;import android.content.ContentValues;import android.net.Uri;import android.provider.ContactsContract;import android.test.AndroidTestCase;public class ContactsProviderTest extends AndroidTestCase {public void testAddContacts(){ContentValues values = new ContentValues();Uri uri = this.getContext().getContentResolver().insert(Uri.parse("content://com.android.contacts/raw_contacts"), values);long row = ContentUris.parseId(uri);values.clear();values.put("raw_contact_id", row);values.put("mimetype","vnd.android.cursor.item/name");values.put("data1", "Neway");this.getContext().getContentResolver().insert(Uri.parse("content://com.android.contacts/data"), values);values.clear();values.put("raw_contact_id", row);values.put("mimetype","vnd.android.cursor.item/phone_v2");values.put("data1","15172546339");this.getContext().getContentResolver().insert(Uri.parse("content://com.android.contacts/data"), values);}/* * 采用批处理的方法对添加添加联系人进行操作。 */public void testAddContacts2() throws Exception{Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");ContentResolver resolver = this.getContext().getContentResolver();ArrayList <ContentProviderOperation> operations = new ArrayList<ContentProviderOperation>();ContentValues values = new ContentValues();ContentProviderOperation operation1 = ContentProviderOperation.newInsert(uri).withValues(values).build();operations.add(operation1);ContentProviderOperation operation2 = ContentProviderOperation.newInsert(Uri.parse("content://com.android.contacts/data")).withValueBackReference("raw_contact_id", 0)//将第一次操作返回的结果赋值给raw_contact_id.withValue("mimetype", "vnd.android.cursor.item/name").withValue("data1", "Colorful").build();operations.add(operation2);ContentProviderOperation operation3 = ContentProviderOperation.newInsert(Uri.parse("content://com.android.contacts/data")).withValueBackReference("raw_contact_id", 0).withValue("mimetype","vnd.android.cursor.item/phone_v2").withValue("data1","15516689456").build();operations.add(operation3);ContentProviderOperation operation4 = ContentProviderOperation.newInsert(Uri.parse("content://com.android.contacts/data")).withValueBackReference("raw_contact_id", 0).withValue("mimetype","vnd.android.cursor.item/email_v2").withValue("data1","cuiColorful@sina.com").build();operations.add(operation4);resolver.applyBatch("com.android.contacts", operations);}}
- ContentProvider学习心得(中)--通过单元测试的方式完成对通讯录内容的操作
- Android中通过ContentProvider和ContentResolver对通讯录的读取与操作
- 通过JDBC完成对数据库的操作
- 10 通过内容提供者操作另外一个应用私有数据库的内容 Contentprovider
- 安卓学习笔记--通过ContentProvider读写系统的通讯录
- 实现ContentResolver对ContentProvider内容的修改
- Android中操作数据的集中方式---文件,SQLite,ContentProvider
- contentProvider访问系统的通讯录
- 通过ContentProvider查看通讯录
- 通过ContentProvider完成不同应用程序之间的数据提取
- android的与ContentResolver(内容访问者)对ContentProvider(内容提供者)的增删查改
- java中多种方式读文件,追加文件内容,对文件的各种操作
- java中多种方式读文件,追加文件内容,对文件的各种操作
- 监听Android中ContentProvider内容的变化
- Android中内容提供者ContentProvider的使用
- Android中内容提供者ContentProvider的详解
- Android中内容提供者ContentProvider的详解
- ContentProvider操作通讯录
- Uva 11538-Chess queue象棋中的皇后
- Makefile实例1
- 给Android应用开发者的十个建议
- MFC应用---超链接RichEdit
- js 下拉框
- ContentProvider学习心得(中)--通过单元测试的方式完成对通讯录内容的操作
- 同步互斥发展历史算法
- Android--用JSON解析数据
- 真机测试及布署Code Sign error问题总结
- 购房随想
- Android之Activity与Service通信
- iOS中autorelease变量应注意的问题
- 【算法导论】之堆排序
- awk提取一串字符中的数字
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
诸天馆长 小书翁
山蓝仙鹟
小商品股票代码
小程序开发代码
python小程序代码
宠物小精灵绿宝石金手指代码
大王令我来巡山歌词
小仲马
小仲马作品
茶花女小仲马
小企业家
中小企业划型标准规定
中小企业
小企业
中小企业股份转让系统
中国中小商业企业协会
深圳中小企业贷款
小蓝本企业查询
小企业会计制度
小公司企业简介
中小企业局
中小企业免息贷款
中小企业融资案例分析
中小企业管理模式
中小企业网站制作公司
小企业员工保险
小企业保险
小企业怎么融资
小型企业标准
小企业怎么报税
家庭小企业
小企业有哪些
小企业网站
小企业记账软件
小企业标准
小企业会计
小企业 erp
小企业年检
小企业贷
小企业优势
小企业注册流程