1. 示例代码

需要的读写联系人的权限

<uses-permission android:name="android.permission.WRITE_CONTACTS"/>
<uses-permission android:name="android.permission.READ_CONTACTS"/>

读联系人代码

public void click(View view) {
ContentResolver resolver = getContentResolver();
// raw_contact 表的uri
Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");
// data 表的uri
Uri dataUri = Uri.parse("content://com.android.contacts/data");
Cursor cursor = resolver.query(uri, new String[] { "contact_id" },
null, null, null);
while (cursor.moveToNext()) {
String id = cursor.getString(0);
//系统删除联系人的时候不会删除全部db中的信息,只是将id置为 null
if (id != null) {
Cursor dataCursor = resolver.query(dataUri, new String[] {
"data1", "mimetype" }, "raw_contact_id=?",
new String[] { id }, null);
while (dataCursor.moveToNext()) {
String data = dataCursor.getString(0);
String mimetype = dataCursor.getString(1);
System.out.println("data:" + data);
System.out.println("mimetype:" + mimetype); }
dataCursor.close();
System.out.println("----------");
}
}
cursor.close();
}

写联系人代码

public void click(View view) {
String name = et_name.getText().toString().trim();
String phone = et_phone.getText().toString().trim();
String email = et_email.getText().toString().trim(); if (TextUtils.isEmpty(name) || TextUtils.isEmpty(phone)) {
Toast.makeText(this, "姓名或者电话不能为空", 1).show();
return;
}
// 把数据写入到系统的联系人.
ContentResolver resolver = this.getContentResolver();
// ----------在raw_contant表中添加一条新的id---------------
Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");
// 插入联系人 必须要知道 新的联系人的id
Cursor cursor = resolver.query(uri, new String[] { "contact_id" },
null, null, "contact_id");
int contact_id;
if (cursor.moveToLast()) {
contact_id = cursor.getInt(0) + 1; // 数据库里面有数据 最后一条联系人的id + 1
} else {// 原先数据库是空的 从第一个联系人开始
contact_id = 1;
}
ContentValues values = new ContentValues();
values.put("contact_id", contact_id);
resolver.insert(uri, values);
// ----------------------------- // ------------在data表里面 添加id对应的数据-------------
Uri dataUri = Uri.parse("content://com.android.contacts/data"); // 插入姓名
ContentValues nameValue = new ContentValues();
nameValue.put("data1", name);
nameValue.put("raw_contact_id", contact_id);
nameValue.put("mimetype", "vnd.android.cursor.item/name");
resolver.insert(dataUri, nameValue); // 插入电话
ContentValues phoneValue = new ContentValues();
phoneValue.put("data1", phone);
phoneValue.put("raw_contact_id", contact_id);
phoneValue.put("mimetype", "vnd.android.cursor.item/phone_v2");
resolver.insert(dataUri, phoneValue); // 插入邮箱
if (!TextUtils.isEmpty(email)) {
ContentValues emailValue = new ContentValues();
emailValue.put("data1", email);
emailValue.put("raw_contact_id", contact_id);
emailValue.put("mimetype", "vnd.android.cursor.item/email_v2");
resolver.insert(dataUri, emailValue);
} Toast.makeText(this, "插入数据成功", 0).show();
}

最新文章

  1. [已解决] java 增加 ALPN支持
  2. JSTL中fmt标签详解
  3. 高效使用你的Xcode
  4. EF 基本数据过滤
  5. mysql 经典题目
  6. 2014年最火的 21个JavaScript 框架
  7. Java中的流程控制(二)
  8. 集群下Cookie共享,必须要设置machineKey
  9. VMware下对Ubuntu进行扩充磁盘大小
  10. luogu P5323 [BJOI2019]光线
  11. window.external的使用
  12. Seaweed-FS综合使用测试(转)
  13. 转载:mysql添加用户、删除用户、授权、修改密码
  14. HTTP协议状态码详解(HTTP Status Code)(转)
  15. 【POJ】2142 The Balance 数论(扩展欧几里得算法)
  16. mysql创建用户并手授权
  17. [leetcode-648-Replace Words]
  18. KVM- 存储池配置
  19. HDU 6112.今夕何夕-蔡勒公式 (2017&quot;百度之星&quot;程序设计大赛 - 初赛(A)1005)
  20. mongodb索引 全文索引

热门文章

  1. linux下安装mysql(mariadb)
  2. spring 自定义事物同步器(一): TransactionSynchronizationManager 解析
  3. CentOS yum 安装node.js
  4. 机器学习第7周-炼数成金-支持向量机SVM
  5. python select poll
  6. Mysql—(1)—
  7. 数据库(11)-- Hash索引和BTree索引 的区别
  8. PKU 3020 Antenna Placement(拆点+最小边覆盖)(最大匹配)
  9. 解决Ubuntu sudo apt-get install遇到的E: Sub-process /usr/bin/dpkg returned an error code (1)问题
  10. Winter-2-STL-F Ananagrams 解题报告及测试数据