Android 聯絡人資料庫操作

2021-08-09 13:16:30 字數 2432 閱讀 9757

android 聯絡人資料庫

contentproviders 是android 系統核心元件之一,contentproviders 封裝了資料的訪問介面

有時候需要更新多行資料,可以選擇呼叫多次contentresolver的對應函式,或者 使用批量操作。當然 後者效能會比較好些

為了使批量更新、插入、刪除資料更加方便,android系統引入了 contentprovideroperation類

所有的操作都在乙個事務中執行,這樣可以保證資料完整性

由於批量操作在乙個事務中執行,只需要開啟和關閉乙個事務,比多次開啟關閉多個事務效能要好些

使用批量操作和多次單個操作相比,減少了應用和contentprovider之間的上下文切換,這樣也會提公升應用的效能,並且減少占用cpu的時間,當然也會減少電量的消耗。

arraylistops = new arraylist();

刪除操作

ops.add(contentprovideroperation.newdelete(contactscontract.data.content_uri)

.withselection(contactscontract.contacts.data.raw_contact_id + "=" + rawcontactid, null)

.build());

插入操作(備註)

ops.add(contentprovideroperation.newinsert(contactscontract.data.content_uri)

.withvalue(contactscontract.contacts.data.raw_contact_id, rawcontactid)

.withvalue(contactscontract.contacts.data.mimetype, contactscontract.commondatakinds.note.content_item_type)

.withvalue(contactscontract.commondatakinds.note.note, remark.trim())

.build());

插入操作(群組)

ops.add(contentprovideroperation.newinsert(contactscontract.data.content_uri)

.withvalue(contactscontract.contacts.data.raw_contact_id, rawcontactid)

.withvalue(contactscontract.contacts.data.mimetype, contactscontract.commondatakinds.groupmembership.content_item_type)

.withvalue(contactscontract.commondatakinds.groupmembership.group_row_id, grouplists.get(i).trim())

.build());

插入操作(位址)

ops.add(contentprovideroperation.newinsert(contactscontract.data.content_uri)

.withvalue(contactscontract.contacts.data.raw_contact_id, rawcontactid)

.withvalue(contactscontract.contacts.data.mimetype, contactscontract.commondatakinds.structuredpostal.content_item_type)

.withvalue(contactscontract.commondatakinds.structuredpostal.formatted_address, contactaddress.trim())

.build());

插入操作(姓名)

ops.add(contentprovideroperation.newinsert(contactscontract.data.content_uri)

.withvalue(contactscontract.contacts.data.raw_contact_id, rawcontactid)

.withvalue(contactscontract.contacts.data.mimetype, contactscontract.commondatakinds.structuredname.content_item_type)

.withvalue(contactscontract.commondatakinds.structuredname.given_name, contactname.trim())

.build());

contentproviderresult results = null;

if (ops.size() > 0)

android電話聯絡人資料庫

最近做乙個聯絡人方面的專案,包括通訊錄在這記錄一下,希望可以幫到有用的朋友 1.查詢手機所有聯絡人 public void querycontactphonenumber null,null,null,null for int i 0 i cursor.getcount i emitter.onne...

Android 聯絡人資料庫表詳解

更多 1.首先手機新增幾個聯絡人 2.然後在此路徑下可以找到檔案 data data com.android.providers.contacts databases contact2.db 3.匯出檔案,將其匯入視覺化資料庫管理器當中 這裡用的是sqlite expert personal 我去。...

Android中訪問聯絡人資料示例

聯絡人提供了自己contentprovider,因此可以使用contentresolver來訪問它的資料。舉例來說 建立乙個隱式intent final intent pickintent new intent intent.action pick,contactscontract.contacts...