Android 利用内容提供者添加联系人的操作
上文中《Android 获取系统的联系人》主要介绍了怎样获取系统联系人并实战了一下,本文将介绍如何添加一条联系人信息
添加联系人
1. 添加raw_contacts表,添加一条联系人的id
2. 操作data表,插入联系人的数据,每个联系人数据都对应一列 raw_contact_id
新建项目,布局文件代码如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" > <EditText
android:id="@+id/et_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入联系人的姓名" /> <EditText
android:id="@+id/et_phone"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入联系人的电话" /> <EditText
android:id="@+id/et_email"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入联系人的邮箱" /> <Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="save"
android:text="提交数据" /> </LinearLayout>

添加相关代码
package com.wuyudong.addcontact; import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.database.Cursor;
import android.text.TextUtils;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast; public class MainActivity extends Activity { private EditText et_name;
private EditText et_phone;
private EditText et_mail; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); et_name = (EditText) findViewById(R.id.et_name);
et_phone = (EditText) findViewById(R.id.et_phone);
et_mail = (EditText) findViewById(R.id.et_email);
} public void save(View view) { String name = et_name.getText().toString().trim();
String phone = et_phone.getText().toString().trim();
String email = et_mail.getText().toString().trim(); if (TextUtils.isEmpty(name) || TextUtils.isEmpty(phone)
|| TextUtils.isEmpty(email)) {
Toast.makeText(this, "内容不能为空", 0).show();
} else {
// 保存数据
ContentResolver resolver = getContentResolver();
Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");
Uri datauri = Uri.parse("content://com.android.contacts/data");
Cursor cursor = resolver.query(uri, null, null, null, null);
int count = cursor.getCount();
ContentValues values = new ContentValues();
int contact_id = count + 1;
values.put("contact_id", contact_id);
resolver.insert(uri, values);
// 2.插入具体的数据到data表,数据类型,data1具体的数据
ContentValues namevalue = new ContentValues();
namevalue.put("mimetype", "vnd.android.cursor.item/name"); // 指定数据类型
namevalue.put("data1", name);
namevalue.put("raw_contact_id", contact_id); // 一定要记得指定数据属于哪个联系人
resolver.insert(datauri, namevalue); ContentValues emailvalue = new ContentValues();
emailvalue.put("mimetype", "vnd.android.cursor.item/email_v2");
emailvalue.put("data1", email);
emailvalue.put("raw_contact_id", contact_id);
resolver.insert(datauri, emailvalue); ContentValues phonevalue = new ContentValues();
phonevalue.put("mimetype", "vnd.android.cursor.item/phone_v2");
phonevalue.put("data1", phone);
phonevalue.put("raw_contact_id", contact_id);
resolver.insert(datauri, phonevalue); Toast.makeText(this, "添加成功", 0).show(); } } }
Android 利用内容提供者添加联系人的操作的更多相关文章
- Android基础笔记(十四)- 内容提供者读取联系人
利用内容提供者读取联系人 利用内容提供者插入联系人 内容观察者的原理 利用内容观察者监听系统应用数据库或者自己应用数据库的变化 利用内容提供者读取联系人 读取联系人相对于读取短信来说就复杂非常多了,我 ...
- Android初级教程之内容提供者获取联系人信息
内容提供折详细理论知识请参考之前的博文:http://blog.csdn.net/qq_32059827/article/details/51646513 这里新建了三个联系人信息,通过查看系统联系人 ...
- Android使用内容提供者实现增删改查操作
Android使用内容提供者实现增删改查操作 这里需要建立两个项目:SiYouShuJuKu(使用内容提供者暴露相关的操作),DQDYGApplication(使用内容解析者对第一个应用进行相关的解析 ...
- Android 中内容提供者的使用
在Android中内容提供者主要是用于不同程序之间的数据共享.内容提供器的用法一般有两种,一种是使用现有的内容提供器来读取和操作相应程序的数据,另一种是创建自己的内容提供器,供其他的程序访问. 使用现 ...
- Android中内容提供者ContentProvider的详解
1.什么是ContentProvider 首先,ContentProvider(内容提供者)是android中的四大组件之一,但是在一般的开发中,可能使用的比较少. ContentProvider为不 ...
- Android基础内容提供者ContentProvider的使用详解(转)
1.什么是ContentProvider 首先,ContentProvider(内容提供者)是android中的四大组件之一,但是在一般的开发中,可能使用的比较少. ContentProvider为不 ...
- [Android Pro] 内容提供者ContentProvider的基本使用
一.ContentProvider简介 当应用继承ContentProvider类,并重写该类用于提供数据和存储数据的方法,就可以向其他应用共享其数据.ContentProvider为存储和获取数据提 ...
- Android 之内容提供者 内容解析者 内容观察者
contentProvider:ContentProvider在Android中的作用是对外提供数据,除了可以为所在应用提供数据外,还可以共享数据给其他应用,这是Android中解决应用之间数据共享的 ...
- android contentprovider内容提供者
contentprovider内容提供者:让其他app可以访问私有数据库(文件) 1.AndroidManifest.xml 配置provider <?xml version="1.0 ...
随机推荐
- HT for Web 中Painter的介绍及用法
鉴于许多同学对Painter不熟悉,所以撰写此文介绍下.Painter的中文意思是画家.漆工,那放到HT里是什么意思呢?很简单,这是HT特有的一种接口,允许开发者在拓扑及其它通用组件上使用Canvas ...
- 实现在GET请求下调用WCF服务时传递对象(复合类型)参数
WCF实现RESETFUL架构很容易,说白了,就是使WCF能够响应HTTP请求并返回所需的资源,如果有人不知道如何实现WCF支持HTTP请求的,可参见我之前的文章<实现jquery.ajax及原 ...
- JAVA - IDEA快捷键(精简版)
快捷键 功能 Ctrl + Alt + V 对应eclipse ctrl + l + 2 自动补全 Ctrl + Alt + L 对应eclipse ctrl + shift + o 代码格式化 Ct ...
- 【原创】Lucene.Net+盘古分词器(详细介绍)
本章阅读概要 1.Lucenne.Net简介 2.介绍盘古分词器 3.Lucene.Net实例分析 4.结束语(Demo下载) Lucene.Net简介 Lucene.net是Lucene的.net移 ...
- 用jquery实现遮罩层
<div style=" display:none" id="yinying"></div> <script type=" ...
- 损失函数(Loss Function) -1
http://www.ics.uci.edu/~dramanan/teaching/ics273a_winter08/lectures/lecture14.pdf Loss Function 损失函数 ...
- C# 之httpwatch 缩减HttpWatch成可以进行二次开发的代码
写在前面 本文由来 特别鸣谢 支持开源 1. 写在前面 也是由于项目需要,之前对抓包,有两个方向的理解 1.使用代理抓包,自己写一个中转服务器,就可用拿到,发送和服务器返回的任何数据了.(因为操作的时 ...
- Type mismatch: cannot convert from java.sql.PreparedStatement to com.mysql.jdbc.PreparedStatement
Connection.prepareStatement()函数出错,提示: Type mismatch: cannot convert from java.sql.PreparedStatement ...
- 【Java每日一题】20161201
20161130问题解析请点击今日问题下方的"[Java每日一题]20161201"查看 package Dec2016; public class Ques1201 { publ ...
- Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
Java并发编程:CountDownLatch.CyclicBarrier和Semaphore 在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch ...