为了账号安全,请及时绑定邮箱和手机立即绑定

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

标签:
Android

二百多条记录差不多要七分钟
 
使用下面批量添加方法,不到两分钟

/**
  * 批量添加通讯录
  * 
  * @throws OperationApplicationException
  * @throws RemoteException
  */
 public static void BatchAddContact(List<Tb_contacts> list)
   throws RemoteException, OperationApplicationException {
  GlobalConstants.PrintLog_D("[GlobalVariables->]BatchAddContact begin");
  ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
  int rawContactInsertIndex = 0;
  for (Tb_contacts contact : list) {
   rawContactInsertIndex = ops.size(); // 有了它才能给真正的实现批量添加

   ops.add(ContentProviderOperation.newInsert(RawContacts.CONTENT_URI)
     .withValue(RawContacts.ACCOUNT_TYPE, null)
     .withValue(RawContacts.ACCOUNT_NAME, null)
     .withYieldAllowed(true).build());

   // 添加姓名
   ops.add(ContentProviderOperation
     .newInsert(
       Android.provider.ContactsContract.Data.CONTENT_URI)
     .withValueBackReference(Data.RAW_CONTACT_ID,
       rawContactInsertIndex)
     .withValue(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE)
     .withValue(StructuredName.DISPLAY_NAME, contact.getName())
     .withYieldAllowed(true).build());
   // 添加号码
   ops.add(ContentProviderOperation
     .newInsert(
       android.provider.ContactsContract.Data.CONTENT_URI)
     .withValueBackReference(Data.RAW_CONTACT_ID,
       rawContactInsertIndex)
     .withValue(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE)
     .withValue(Phone.NUMBER, contact.getNumber())
     .withValue(Phone.TYPE, Phone.TYPE_MOBILE)
     .withValue(Phone.LABEL, "").withYieldAllowed(true).build());
  }
  if (ops != null) {
   // 真正添加
   ContentProviderResult[] results = mContext.getContentResolver()
     .applyBatch(ContactsContract.AUTHORITY, ops);
   // for (ContentProviderResult result : results) {
   // GlobalConstants
   // .PrintLog_D("[GlobalVariables->]BatchAddContact "
   // + result.uri.toString());
   // }
  }
 }

通过以上的对比,对于数据库效率就不一样了!

原文链接:http://www.apkbus.com/blog-459392-60283.html

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消