Android 編輯聯絡人,增、刪、改程式碼
最近的一個小專案有一個新增聯絡人的功能,到網上找了些資料,最後解決問題。
在此分享,其中有一個小小的問題,順帶分享解決方法。
增刪改程式碼
刪除
修改private void delContact(Context context, String name) { Cursor cursor = getContentResolver().query(Data.CONTENT_URI,new String[] { Data.RAW_CONTACT_ID }, ContactsContract.Contacts.DISPLAY_NAME + "=?",new String[] { name }, null); ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); if (cursor.moveToFirst()) { do { long Id = cursor.getLong(cursor.getColumnIndex(Data.RAW_CONTACT_ID)); ops.add(ContentProviderOperation.newDelete( ContentUris.withAppendedId(RawContacts.CONTENT_URI,Id)).build()); try { getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); } catch (Exception e){} } while (cursor.moveToNext()); cursor.close(); } }
private void updateContact(Context context,String oldname, String name, String phone, String email,String website, String organization, String note) { Cursor cursor = getContentResolver().query(Data.CONTENT_URI,new String[] { Data.RAW_CONTACT_ID }, ContactsContract.Contacts.DISPLAY_NAME + "=?",new String[] { oldname }, null); cursor.moveToFirst(); String id = cursor.getString(cursor.getColumnIndex(Data.RAW_CONTACT_ID)); cursor.close(); ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI) .withSelection( Data.RAW_CONTACT_ID + "=?" + " AND "+ ContactsContract.Data.MIMETYPE + " = ?" + " AND " + Phone.TYPE + "=?",new String[] { String.valueOf(id),Phone.CONTENT_ITEM_TYPE, String.valueOf(Phone.TYPE_HOME) }).withValue(Phone.NUMBER, phone).build()); // 更新email ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI) .withSelection(Data.RAW_CONTACT_ID + "=?" + " AND "+ ContactsContract.Data.MIMETYPE + " = ?" +" AND " + Email.TYPE + "=?",new String[] { String.valueOf(id),Email.CONTENT_ITEM_TYPE, String.valueOf(Email.TYPE_HOME) }).withValue(Email.DATA, email).build()); // 更新姓名 ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI) .withSelection(Data.RAW_CONTACT_ID + "=?" + " AND "+ ContactsContract.Data.MIMETYPE + " = ?",new String[] { String.valueOf(id),StructuredName.CONTENT_ITEM_TYPE }).withValue(StructuredName.DISPLAY_NAME, name).build()); // 更新網站 ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI) .withSelection(Data.RAW_CONTACT_ID + "=?" + " AND "+ ContactsContract.Data.MIMETYPE + " = ?",new String[] { String.valueOf(id),Website.CONTENT_ITEM_TYPE }).withValue(Website.URL, website).build()); // 更新公司 ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI) .withSelection(Data.RAW_CONTACT_ID + "=?" + " AND "+ ContactsContract.Data.MIMETYPE + " = ?",new String[] { String.valueOf(id),Organization.CONTENT_ITEM_TYPE }) .withValue(Organization.COMPANY, organization).build()); // 更新note ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI) .withSelection(Data.RAW_CONTACT_ID + "=?" + " AND "+ ContactsContract.Data.MIMETYPE + " = ?",new String[] { String.valueOf(id),Note.CONTENT_ITEM_TYPE }).withValue(Note.NOTE, note).build()); try{ getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); } catch (Exception e) { } }
新增
private void addContact(Context context, String name,
String organisation,String phone, String fax, String email, String address,String website,String nickname){
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
//在名片表插入一個新名片
ops.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI)
.withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null).withValue(ContactsContract.RawContacts._ID, 0).withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null).withValue(
ContactsContract.RawContacts.AGGREGATION_MODE,ContactsContract.RawContacts.AGGREGATION_MODE_DISABLED).build());
// add name
//新增一條新名字記錄;對應RAW_CONTACT_ID為0的名片
if (!name.equals("")) {
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0).withValue(
ContactsContract.Data.MIMETYPE,ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE).withValue(
ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME,name).build());
}
//新增暱稱
if(!nickname.equals("")){
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0).withValue(
ContactsContract.Data.MIMETYPE,ContactsContract.CommonDataKinds.Nickname.CONTENT_ITEM_TYPE).withValue(ContactsContract.CommonDataKinds.Nickname.NAME,nickname).build());
}
// add company
if (!organisation.equals("")) {
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI).withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0).withValue(ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE).withValue(
ContactsContract.CommonDataKinds.Organization.COMPANY,organisation).withValue(
ContactsContract.CommonDataKinds.Organization.TYPE,ContactsContract.CommonDataKinds.Organization.TYPE_WORK).build());
}
// add phone
if (!phone.equals("")) {
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
.withValue(ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE).withValue(ContactsContract.CommonDataKinds.Phone.NUMBER,phone).withValue(ContactsContract.CommonDataKinds.Phone.TYPE,1).build());
}
// add Fax 傳真,一般不用了
if (!fax.equals("")) {
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI).withValueBackReference(
ContactsContract.Data.RAW_CONTACT_ID, 0).withValue(
ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE).withValue(
ContactsContract.CommonDataKinds.Phone.NUMBER,fax)
.withValue(ContactsContract.CommonDataKinds.Phone.TYPE,
ContactsContract.CommonDataKinds.Phone.TYPE_FAX_WORK).build());
}
// add email
if (!email.equals("")) {
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(
ContactsContract.Data.RAW_CONTACT_ID, 0).withValue(
ContactsContract.Data.MIMETYPE,ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE).withValue(ContactsContract.CommonDataKinds.Email.DATA,email).withValue(ContactsContract.CommonDataKinds.Email.TYPE,1).build());
}
// add address
if (!address.equals("")) {
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI).withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0).withValue(
ContactsContract.Data.MIMETYPE,ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE).withValue(
ContactsContract.CommonDataKinds.StructuredPostal.STREET,address)
.withValue(ContactsContract.CommonDataKinds.StructuredPostal.TYPE,
ContactsContract.CommonDataKinds.StructuredPostal.TYPE_WORK).build());
}
// add website
if (!website.equals("")) {
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
.withValue(ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.Website.CONTENT_ITEM_TYPE).withValue(
ContactsContract.CommonDataKinds.Website.URL,website)
.withValue(
ContactsContract.CommonDataKinds.Website.TYPE,
ContactsContract.CommonDataKinds.Website.TYPE_WORK).build());
}
// add IM
if(!im.equals("")){
//String qq="459255045"; for test
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI).withValueBackReference(
ContactsContract.Data.RAW_CONTACT_ID, 0).withValue(
ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.Im.CONTENT_ITEM_TYPE).withValue(
ContactsContract.CommonDataKinds.Im.DATA1,im)
.withValue(
ContactsContract.CommonDataKinds.Im.PROTOCOL,
ContactsContract.CommonDataKinds.Im.PROTOCOL_QQ).build());
}
try {
context.getContentResolver().applyBatch(
ContactsContract.AUTHORITY, ops);
} catch (Exception e){
}
}
最後功能可以實現了,我只要新增功能。
但是很奇怪只能新增一次,所以又要修改,最後找到原因
// 在名片表插入一個新名片
ops.add(ContentProviderOperation
.newInsert(ContactsContract.RawContacts.CONTENT_URI)
.withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null)
.withValue(ContactsContract.RawContacts._ID, 0)
.withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null)
.withValue(ContactsContract.RawContacts.AGGREGATION_MODE,
ContactsContract.RawContacts.AGGREGATION_MODE_DISABLED)
.build());
把上面程式碼的 紅色部分去掉即可
這是在一個android論壇找到的資料。
相關推薦
Android 編輯聯絡人,增、刪、改程式碼
最近的一個小專案有一個新增聯絡人的功能,到網上找了些資料,最後解決問題。 在此分享,其中有一個小小的問題,順帶分享解決方法。 增刪改程式碼 刪除 private void delContact(Context context, String name) { Cursor
Android SQLite資料庫:增、刪、改、查,以及資料庫版本管理
建立資料庫版本v.1 /** * 作者:created by meixi * 郵箱:[email protected] * 日期:2018/10/9 11 */ public class DBHelper extends SQLiteOpenHelper
Java封裝JDBC數據庫增、刪、改、查操作成JAR文件,以供Web工程調用,適用於多種數據庫
通過 ive trac end 使用方法 數據 div bstr 工程 廢話不多說,直接上源代碼,最後有使用方法,當然,也可以作為普通公用類使用,只是封裝成JAR更方便使用。 [java] view plain copy package db.util;
單例模式寫MySQL model類,簡單的增、刪、改、查
單例模式的用途,可用於資料庫操作 <?php Class Db { static private $whe;//條件 static private $tab;//表名 static private $lim;//分段變數 static private $ord
【SRH】------node連接mongodb,實現增、刪、改、查功能
get 準備工作 升序 toarray update move demo ole 完成 node連接mongodb 準備工作 1.在項目根目錄下 初始化倉庫,形成node包 npm init -y 2.下載mongodb包 cnpm inst
【SRH】------node連線mongodb,實現增、刪、改、查功能
node連線mongodb 準備工作 1.在專案根目錄下 初始化倉庫,形成node包 npm init -y 2.下載mongodb包
MySQL:03---DDL(資料庫與表的建立、刪除等),DML(表資料的增、刪、改等)
一、資料定義語言(DDL) 1.概念:定義資料庫、資料表、函式、檢視、索引、觸發器等 2.資料庫的基本操作 ①資料庫的建立 create database 資料庫名; //建立資料庫用預設的字符集 create database 資料庫名 de
【SRH】------mongoose,增、刪、改、查
mongoose中文文件 https://cn.mongoosedoc.top/docs/guide.html mongodb與mongoose的區別 mongoose: 可以將非關係型資料庫轉為關係型資料庫 可以限制欄位的型別 mongoose有pr
Android ContentProvider的常用的增、刪、改、查使用方法
1、insert public void insertEmergency(String name, String number, String msg, String account) { ContentResolver resolver = mContex
android開發之SQLite資料庫 增、刪、改、查
學習android開發不可避免的會涉及資料庫的使用,android使用的是SQLite資料庫。對於SQLite資料庫的基本資訊這裡就不過多的介紹,我們主要看哈是怎麼用的就是了。與以往資料庫不一樣的地方以前我們做javaWeb開發時用jdbc連線,現在變了,個人
IT忍者神龜之jquery easyui DataGrid 例項,增、刪、查、改基礎功能
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ include file="/common/taglibs.jsp"%&g
iOS開發中SQLite簡單使用(基礎用法:建立表,增、刪、改、查)
SQLite,是一款輕型的資料庫,是遵守ACID的關係型資料庫管理系統,它包含在一個相對小的C庫中。它是D.RichardHipp建立的公有領域專案。它的設計目標是嵌入式的,而且目前已經在很多嵌入式產
Oracle數據庫的增、刪、改、查
sel 增加 大小寫 tid rac inux run 結構化 values Oracle數據庫中,數據的增、刪、改、查,通過SQL語句實現 SQL:結構化查詢語言; 特點:不區分大小寫;字符串用單引號引起來;語句結束用分號表示結束; 行註釋,在語句的最前面加“--” 塊
LINQ 【增、刪、改、查】數據綁定
tegra 文件 固定 bmi query asi 操作 作用 tor LINQ,語言集成查詢(Language Integrated Query) 是一組用於c#和Visual Basic語言的擴展。它允許編寫C#或者Visual Basic代碼以查詢數據庫相同的方式操作
SQL 語法之“增”、“刪”、“改”、“查”
group by num having div 沒有 popu 模糊查詢 上海 條件 /* 四、查 1.普通查詢 語法:select <列名> from <表名> [where <查詢條件表達試>] [order by &
C#回顧 Ado.Net C#連接數據庫進行增、刪、改、查
app linq while 一行 awk col 所有 console value 一、簡介 1、ado.net是一門數據庫訪問技術。 他可以通過程序來操作數據庫 2、類庫 Connection 類 和數據庫交互,必須連接它。連接幫助指明數據庫服務器、數據庫名字、用戶名、
淺談表格(jq)的增、刪、改、查
false als 刪除 parse ++ script span 原生js true html代碼: <table border="1" cellpadding="20" cellspacing="0"> <thead> <t
表格增、刪、改、查、排序(jq方法、第一版)
yellow 成功 刪除按鈕 on() css -- action 是否 htm 功能: 1.動態添加表格 2.動態刪除表格,想刪就刪,任性 3.動態修改數據,就是看不順眼,改,改,改 4.動態‘查戶口‘ 5.序列號動態改變,你加內容我變,你刪除內容我也變 6.客戶就是上帝
SSM框架中的Mapper.xml文件中的增、刪、改、查等操作
關系 class 標識 encoding res doctype info com 參數類型 1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE mapper PUBLIC "-//mybati
MySQL之創、增、刪、改、查
整數 alter times font 符號 drop current utf run MySQL Select version(); 當前服務器版本 Select database(); 查看當前工作數據庫 Show databases; 顯示所有數據庫 Sele