1. 程式人生 > >Android 批量插入聯絡人 分享

Android 批量插入聯絡人 分享

大體的問題是這樣的:

class VCardEntry{
  String name;
  String[] number;
     getDisplayName();
     getPhoneList()
  class phone {
        getNumber();
  }
  
}

傳來的資料:
這些是從網路端截獲的資料

name :zhangsan
number : 123,456,789 (好幾個號碼)

name:lisi
number :111,222,333

name:wangwu
number:159753
。。。。。。
等好幾百個數據



ArrayList<VCardEntry> list;

需要批量存入資料庫

ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();


            ArrayList<VCardEntry> list = params[0];
            Iterator<VCardEntry> it = null;
            if (list != null) {
                it = list.iterator();
            }
            Logger.v(TAG,"--->doInBackground it:"+it);
            int rawContactInsertIndex = 0;
            while(it!= null && it.hasNext()) {
                VCardEntry mv = it.next();
                rawContactInsertIndex = ops.size(); // 有了它才能給真正的實現批量新增
                Logger.v(TAG,"--->>>>>>>name:"+mv.getDisplayName());
                Logger.v(TAG,"--->>>>>>>getPhoneList:"+mv.getPhoneList());
                if (mv.getPhoneList() != null) {
                    ops.add(ContentProviderOperation
                        .newInsert(RawContacts.CONTENT_URI)
                        .withValue(RawContacts.ACCOUNT_TYPE, ACCOUNT_NAME)
                        .withValue(RawContacts.ACCOUNT_NAME, ACCOUNT_TYPE)
                        .withYieldAllowed(true).build());
                    // add name
                    ops.add(ContentProviderOperation
                        .newInsert(Data.CONTENT_URI)
                        .withValueBackReference(Data.RAW_CONTACT_ID, rawContactInsertIndex)
                        .withValue(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE)
                        .withValue(StructuredName.DISPLAY_NAME, mv.getDisplayName())
                        .withYieldAllowed(true).build());
                    // add number
                    for(VCardEntry.PhoneData phone : mv.getPhoneList()) {
                        Logger.v(TAG,"--->>>>>>>number:"+phone.getNumber());
                        ops.add(ContentProviderOperation
                            .newInsert(Data.CONTENT_URI)
                            .withValueBackReference(Data.RAW_CONTACT_ID, rawContactInsertIndex)
                            .withValue(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE)
                            .withValue(Phone.NUMBER, phone.getNumber())
                            .withValue(Phone.TYPE, Phone.TYPE_MOBILE)
                            .withValue(Phone.LABEL, "")
                            .withYieldAllowed(true).build());
                    }
                }
            }
            ContentProviderResult[] results = null;
            if (ops != null) {
                try {
                    results = mContext.getContentResolver()
                        .applyBatch(ContactsContract.AUTHORITY, ops);
                } catch (RemoteException e) {
                    Logger.e(TAG,String.format("%s: %s", e.toString(), e.getMessage()));
                } catch (OperationApplicationException e) {
                    Logger.e(TAG,String.format("%s: %s", e.toString(), e.getMessage()));
                }
                
            }

相關推薦

Android 批量插入聯絡人 分享

大體的問題是這樣的: class VCardEntry{   String name;   String[] number;      getDisplayName();      getPhoneList()   class phone {         getNum

android批量新增聯絡人工具

研究生期間就沒寫過Java程式碼了,這幾天由於想做一個統計網頁詞頻的工具,但是使用C++不是很方便,於是又用Java做了一個小工具。翻開電腦中以前的檔案,發現之前還做過一個android中批量新增聯絡人的工具,瞬間感覺好親切,也感嘆時間過得好快,一眨眼研究生就快要過完了。

Android通訊錄模糊查詢搜尋(號碼,姓名,首字母簡拼,全拼),批量選取聯絡人

package com.xbc.utils.activity; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Locale; import android.

android插入聯絡人

public void addContact(String name, String phoneNumber) { // 建立一個空的ContentValues ContentValues values = new ContentValues

mysql 批量插入與單條插入 的效率比較

dtd rop too lac int 技術 public urn 方法 1、數據插入性能(單個插入和批量插入) [java] view plain copy public class Test { private Long id;

mybatis批量插入oracle大量數據記錄性能問題解決

bre app count sql super ace popu uri 運行速度 環境: mybatis + oracle11g r2 1.使用"直接路徑插入"(以下sql語句中的"/*+append_v

C++完畢Oracle存儲過程批量插入(二)

con 地址 tco ref path ava nload 能夠 table 上篇文章簡單的介紹了一下oracle參數是Object類型的數據庫存儲過程,以及JAVA使用JDBC去調用該類的存儲過程的方法。可是我須要的是C++下的方案。使用Poco庫未發現不論什麽能夠調

Mybatis+Oracle --批量插入

tar 方式 sys ctc .net util dual 博客 -- Oracle自增長ID: 參考博客:Oracle數據庫創建表ID字段的自動遞增 mybatis語句 參考博客:點評 ibatis+oracle 批量插入的三種方法. 參考第三種 參考博客:mybatis

sql Server如何執行批量插入批量刪除

emc pcs -- frog bps eno bbu ads spc 平時我們sql server執行查詢語句都是通過 insert into 表名(字段名,字段名) values(插入值,插入值) --單條插入語句--- insert into Reader(read

SQL表值參數批量插入

asi exist bject light 定義 idf func val 參數 --使用表值參數向另一數據表中批量插入數據 USE DF17DataPro--創建並使用表值參數步驟/*1.創建表類型並定義表結構。有關如何創建 SQL Server 類型的信息,請參閱用戶定

mybatis 批量插入

true ast pan _id tor mybatis dex key clas 映射文件 以傳入一個List為例 <insert id="[方法名]" useGeneratedKeys="true" parameterType="java.util.List"&

【ADO.NET-中級】百萬級數據的批量插入的兩種方法測試

arch pub 連接 code 新特性 try 簡單 nal ++ 在SQL Server 中插入一條數據使用Insert語句,但是如果想要批量插入一堆數據的話,循環使用Insert不僅效率低,而且會導致SQL一系統性能問題。下面介紹SQL Server支持的兩種批量

android studio友盟分享

com 最新 bsp clas 修改 sta 調試日誌 color style 這個東西搞了整整兩天真是把我搞郁悶著了,官方demo下載後,根據提示的錯誤,修改了一個小bug之後,便能直接運行,但是不管我如何集成到自己app上,分享時APP都會黑屏Crash,並且代

mysql批量插入500條數據

mysql批量插入數據 表格結構如下 需求name和password字段,生成如下格式:總共批量生成500個。解決思路:可以用mysql 存儲過程如果linux環境下可以用shell我們先測試第一種,用存儲過程。DELIMITER ;; ##定義;;為結束符 CREATE PROCE

20170813pptVBA批量插入圖片

rule slide sof nothing cati orien setup.s 加粗 dwr Sub AddSldIn() Dim Pre As Presentation Dim NewSld As Slide Set Pre = Appli

MyBatis 批量插入獲取自增 id 問題解決

插入 lis foreach myba 如果 .cn bsp collect images 問題: 通過 MyBatis 進行批量插入時,如果我們想獲取插入對象所對應的主鍵 id,做法是直接在 <insert> 標簽中直接加入 useGeneratedKeys

mysql使用存儲過程&函數實現批量插入

tar max commit mysq like until code 插入數據 call 寫這邊文章的目的,是想結合mysql 存儲過程+函數完成一個批量刪除的功能吧...正好也好加深下對procedure和function的熟練操作吧...廢話不多說,我就直接上表結構啦

Qt SQLite 批量插入優化(SQLite默認將每條語句看成單獨的事務)good

容器 執行 優化 還需要 文件的 項目 還需 qlite 關閉 使用SQLite存儲數據時發現插入速度太慢,程序跑了將近五分鐘才插入了不到三千條。上網查資料才發現,SQLite這種文件數據庫與MySql機制不一樣,每條事務都有打開和關閉文件的步驟,SQLite默認將每條語句

解決Oracle+Mybatis批量插入報錯:SQL 命令未正確結束

每次 rom list ins 配置文件 解決 報錯 文件 什麽 Mybatis批量插入需要foreach元素。foreach元素有以下主要屬性: (1)item:集合中每一個元素進行叠代時的別名。 (2)index:指定一個名字,用於表示在叠代過程中,每次叠代到的位置。

Jmeter批量插入數據

在線 cnblogs 個數 bsp mage 9.png 選項 .com http 1. 2.選項 -> 函數助手 生成函數字符串 3.在線程組中選擇循環次數 比如20次,會隨機生成20個數據 4.結果如下 Jmeter批量插入數據