由于工作上的需要,把数据库中备份的联系人添加到Android通讯录,一般都有几百条记录,插入一条数据系统默认commit一次,这样效率

由于工作上的需要,把数据库中备份的联系人添加到Android通讯录,一般都有几百条记录,,插入一条数据系统默认commit一次,这样效率就降低了,如果把所有的数据都添加进去后再commit效率就不一样,这就需要事务。

Ubuntu 14.04 x64配置Android 4.4 kitkat编译环境的方法

Ubuntu 12.04搭建Android开发环境

Ubuntu 14.04 配置 Android SDK 开发环境

64位Ubuntu 11.10下Android开发环境的搭建(JDK+Eclipse+ADT+Android SDK详细)

Ubuntu 12.10 x64 安装 Android SDK

没有添加事务的方法,每次添加一条记录

/**

* 单条添加数据

*

* @param contacts

* @return

*/

public boolean add(Tb_contacts contacts) {

SQLiteDatabase db = helper.getWritableDatabase();

ContentValues values = new ContentValues();

values.put("name", contacts.getName());

values.put("number", contacts.getNumber());

long result = db.insert("tb_contacts", null, values);

GlobalConstants.PrintLog_D("[ContactsDAO->add] result = " + result);

db.close();

if (result != -1)

return true;

else

return false;

}

Tb_contacts是实体类

public class Tb_contacts {

private String name;

private String number;

public Tb_contacts() {

super();

}

public Tb_contacts(String name, String number) {

super();

this.name = name;

this.number = number;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getNumber() {

return number;

}

public void setNumber(String number) {

this.number = number;

}

@Override

public String toString() {

return "Tb_contacts [name=" + name + ", number=" + number + "]";

}

}

添加二百多条记录要两分多钟

看下面这种方法

/**

* 批量添加数据

*

* @param cursor

* @return

*/

public boolean add(Cursor cursor) {

SQLiteDatabase db = helper.getWritableDatabase();

long result = 0;

db.beginTransaction();

while (cursor.moveToNext()) {

ContentValues values = new ContentValues();

String contactname = cursor.getString(cursor

.getColumnIndex(Phone.DISPLAY_NAME));

String contactnumber = cursor.getString(cursor

.getColumnIndex(Phone.NUMBER));

values.put("name", contactname);

values.put("number", contactnumber);

result = db.insert("tb_contacts", null, values);

GlobalConstants.PrintLog_D("[ContactsDAO->add] cursor result = "

+ result + " number = " + contactnumber);

}

db.setTransactionSuccessful(); // 设置事务处理成功,不设置会自动回滚不提交

db.endTransaction();

cursor.close();

db.close();

if (result != -1)

return true;

else

return false;

}

传入的参数是查询得到的数据

Cursor contactsCursor = getActivity().getContentResolver().query(

Phone.CONTENT_URI, null, null, null, null); // 读取联系人

contacts.add(contactsCursor);

同样的数据只要十几秒就可以了,关键就这几句话

1.db.beginTransaction(); 循环之前开启事务

2.db.setTransactionSuccessful(); 循环结束后调用

3.db.endTransaction();最后释放事务

以上是对一般数据库的操作,对通讯录有专门的ContentProvider批量操作

先看一条一条记录操作

/**

* 往数据库中新增联系人

*

* @param name

* @param number

*/

public static void AddContact(String name, String number) {

ContentValues values = new ContentValues();

// 首先向RawContacts.CONTENT_URI执行一个空值插入,目的是获取系统返回的rawContactId

Uri rawContactUri = mContext.getContentResolver().insert(

RawContacts.CONTENT_URI, values);

long rawContactId = ContentUris.parseId(rawContactUri);

// 往data表插入姓名数据

values.clear();

values.put(Data.RAW_CONTACT_ID, rawContactId);

values.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);// 内容类型

values.put(StructuredName.GIVEN_NAME, name);

mContext.getContentResolver().insert(ContactsContract.Data.CONTENT_URI,

values);

// 往data表插入电话数据

values.clear();

values.put(Data.RAW_CONTACT_ID, rawContactId);

values.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);

values.put(Phone.NUMBER, number);

values.put(Phone.TYPE, Phone.TYPE_MOBILE);

mContext.getContentResolver().insert(ContactsContract.Data.CONTENT_URI,

values);

}

更多详情见请继续阅读下一页的精彩内容:

android批量添加联系人,Android实现批量添加联系人到通讯录相关推荐

  1. android联系人添加公司,android添加联系人(直接添加到联系人数据库)

    添加联系人姓名.手机.头像... java核心代码 package com.kaka.addContact; import java.io.ByteArrayOutputStream; import  ...

  2. android 批量查找view,Android Recyclerview实现多选,单选,全选,反选,批量删除的功能

    效果图如下: recyclerview 实现多选,单选,全选,反选,批量删除的步骤 1.在recyclerview布局中添加上底部的全选和反选按钮,删除按钮,和计算数量等控件 2.这里选中的控件没有用 ...

  3. android 全选功能,Android Recyclerview实现多选,单选,全选,反选,批量删除的功能

    效果图如下: Recyclerview 实现多选,单选,全选,反选,批量删除的步骤 1.在Recyclerview布局中添加上底部的全选和反选按钮,删除按钮,和计算数量等控件 2.这里选中的控件没有用 ...

  4. android 渠道包测试,Android快速批量多渠道包的“蛋生”

    对于安卓程序猿朋友来说,每当发布新版本的APP,均会分发到各大应用市场,比如腾讯应用宝,豌豆荚和360手机助手等.为了让程序猿同志们更好的区分不同的应用市场,掌握各市场APP发展状况,为了更多体现世界 ...

  5. android 仿微信demo————注册功能完善添加头像功能(服务端)

    android 仿微信demo----微信启动界面实现 android 仿微信demo----注册功能实现(移动端) android 仿微信demo----注册功能实现(服务端) android 仿微 ...

  6. Android学习笔记之Android Studio添加新的Activity

    1.创建Android项目工程:AndroidTest 创建过程可参考网上诸多教程. 2.添加新的Activity,步骤如下 a. 在layout文件夹上右键,New-Activity-相应Activ ...

  7. android 创建3个按钮,【记录】继续尝试给Android程序的右上角的ActionBar中添加三个点的选项按钮...

    [背景] 想要给Android中的ActionBar中添加那种三个点的选项菜单,之前已经折腾过了,但是失败了,以为新版Android中没法添加呢: 但是后来在别的4.1.2的Android手机中,也还 ...

  8. android方法中添加 N,Android N 新功能 - 添加快速设定

    Android N version 其中一个功能,就是允许三方app可以添加自己的快速设定,到系统的下拉设定中,方便用户快速打开关闭某些功能. 废话不多说,直接上代码来讲解. 创建一个class,继承 ...

  9. android+启动脚本,imx6q android 添加开机启动脚本

    1.在xx/out/target/product/sabresd_6dq/root/init.rc中添加以下内容 ========================================== ...

最新文章

  1. Test class should have exactly one public constructor解决办法
  2. 导师:顶会论文3天都复现不出来?你退学吧!
  3. 使用JDBC处理MySQL大数据
  4. 网络编程常用接口的内核实现----sys_listen()
  5. matlab调用c函数语言,MATLAB调用C/C++函数的方法
  6. 如何插入? | 非开车,纯技术交流
  7. Headers and client library minor version mismatch.
  8. 单纯形法只有两个约束条件_教学 | 线性规划 7 :单纯形法的引入
  9. 机器学习工具在数据中心的应用与发展
  10. Android 视频展示控件之 SurfaceView、GLSurfaceView、SurfaceTexture、TextureView 对比总结...
  11. Cocos2dx 3.0 交流篇
  12. 微信支付之H5页面WAP端接入
  13. 缺少winload.efi”的解决办法
  14. windows2008服务器安全防护软件哪个好
  15. 徐有高:为你详细解读我国40省市新能源汽车补贴政策(转载)
  16. 逆向分析QQ消息自动回复机器人设计
  17. HCI超融合供应商全球六强对比
  18. 《勋伯格和声学》读书笔记(十一):相隔三个和四个循环五度的转调
  19. 迷你股票行情,时刻给你最新行情。
  20. VBScript终极破产版石头剪刀布游戏(VBS语言实现)

热门文章

  1. SQL四大基础操作语言DDL,DCL,DQL,DML
  2. 无任何网络提供程序接受指定的网络路径-解决方法
  3. C语言的数据类型详解及应用
  4. POJ1264 SCUD Busters 凸包
  5. VMware虚拟机银河麒麟服务器系统与物理windows主机网络设置相互ping通处理方案之桥接
  6. COMSOL随机多面体骨料 三维凸多面体骨料 无规则孔隙 三维混凝土细观 三维骨料模型
  7. GC433TR4模块性能超穿墙王SI4432无线收发模块
  8. 磁盘清理工具(python)
  9. 计算机应用能力科目怎么选择,专业技术人员计算机应用能力考试科目类别
  10. 2021年起重机司机(限桥式起重机)模拟试题及起重机司机(限桥式起重机)实操考试视频