1.添加联系人逻辑思路

(1)首先在raw_contacts创建一个新的id

(2)在data表里面添加这个id对应的数据

2.下面通过一个案例,说明一下如何添加一条数据到联系人:

(1)首先我们关注一下布局文件,activity_main.xml,如下:

 <RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.himi.addcontact.MainActivity" > <Button
android:onClick="click"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="添加一条联系人数据" /> </RelativeLayout>

布局效果如下:

(2)其次是MainActivity,如下:

 package com.himi.addcontact;

 import android.app.Activity;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast; public class MainActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
} //添加一条联系人信息到系统的数据库
public void click(View view) {
Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");
Uri datauri = Uri.parse("content://com.android.contacts/data");
//获得ContentProvider的解析器
ContentResolver resolver = this.getContentResolver();
//1.在raw_contace表里面添加一条新的id _id desc:表示按照id降序排列
Cursor cursor = resolver.query(uri, new String[]{"_id"}, null, null, "_id desc");
cursor.moveToFirst();
int _id = cursor.getInt(0);//之前,降序排列,这里获得表中最大id值
//计算出来新添加的条目的id
int newId = _id+1;
ContentValues values = new ContentValues();
values.put("contact_id", newId);
resolver.insert(uri, values); //2.在data表中添加对应的数据
//添加电话号码phone
ContentValues phoneValue = new ContentValues();
phoneValue.put("raw_contact_id", newId);
phoneValue.put("mimetype", "vnd.android.cursor.item/phone_v2");
phoneValue.put("data1", "123456");
resolver.insert(datauri, phoneValue);
//添加姓名
ContentValues nameValue = new ContentValues();
nameValue.put("raw_contact_id", newId);
nameValue.put("mimetype", "vnd.android.cursor.item/name");
nameValue.put("data1", "步惊云");
resolver.insert(datauri, nameValue);
//添加email
ContentValues emailValue = new ContentValues();
emailValue.put("raw_contact_id", newId);
emailValue.put("mimetype", "vnd.android.cursor.item/email_v2");
emailValue.put("data1", "bujingyun@163.com");
resolver.insert(datauri, emailValue); Toast.makeText(this, "添加成功", 0).show();
}
}

(3)最后记得添加权限,如下:

 <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.himi.addcontact"
android:versionCode="1"
android:versionName="1.0" > <uses-sdk
android:minSdkVersion="15"
android:targetSdkVersion="17" />
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.WRITE_CONTACTS"/> <application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application> </manifest>

(4)布署程序到模拟器上,如下:

我们先看看系统通信录里面存在的数据,如下:

我们点击"添加一条联系人数据",如下:

Android(java)学习笔记251:ContentProvider使用之添加数据到联系人(掌握)的更多相关文章

  1. Java学习笔记:基本输入、输出数据操作实例分析

    Java学习笔记:基本输入.输出数据操作.分享给大家供大家参考,具体如下: 相关内容: 输出数据: print println printf 输入数据: Scanner 输出数据: JAVA中在屏幕中 ...

  2. Android(java)学习笔记195:ContentProvider使用之添加数据到联系人(掌握)

    1.添加联系人逻辑思路 (1)首先在raw_contacts创建一个新的id (2)在data表里面添加这个id对应的数据 2.下面通过一个案例,说明一下如何添加一条数据到联系人: (1)首先我们关注 ...

  3. Java学习笔记之[ 利用扫描仪Scanner进行数据输入 ]

    /*********数据的输入********//**利用扫描仪Scanner进行数据输入 怎么使用扫描仪Scanner *1.放在类声明之前,引入扫描仪 import java.util.Scann ...

  4. Java学习笔记40(sql:将数据库内数据存入对象中)

    新建一个数据表: use qy97; create table student( id int primary key auto_increment, sname ), gander ), age i ...

  5. 0028 Java学习笔记-面向对象-Lambda表达式

    匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...

  6. 《Java学习笔记(第8版)》学习指导

    <Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...

  7. Android动画学习笔记-Android Animation

    Android动画学习笔记-Android Animation   3.0以前,android支持两种动画模式,tween animation,frame animation,在android3.0中 ...

  8. Java学习笔记:语言基础

    Java学习笔记:语言基础 2014-1-31   最近开始学习Java,目的倒不在于想深入的掌握Java开发,而是想了解Java的基本语法,可以阅读Java源代码,从而拓展一些知识面.同时为学习An ...

  9. Android 数字签名学习笔记

    Android 数字签名学习笔记 在Android系统中,所有安装到系统的应用程序都必有一个数字证书,此数字证书用于标识应用程序的作者和在应用程序之间建立信任关系,如果一个permission的pro ...

随机推荐

  1. javascript基础学习(十一)

    javascript之BOM 学习要点: BOM介绍 Window对象 一.BOM介绍 浏览器对象模型简称为BOM(Brower Object Model),BOM由很多对象构成,对象与对象之间有着相 ...

  2. SAS学习笔记

    一.            在SAS中进行随机抽样: 1. 在实际数据处理中常常需要进行样本抽样,在实践中主要有两种情况: (1)简单无重复抽样(2)分层抽样   a.等比例分层抽样  b. 不等比例 ...

  3. 外边距叠加collapsing-margin

    原载:Smallni | http://www.smallni.com/collapsing-margin/ 恩,margin叠加一直是个问题,也是我们一直会遇到的问题,很久以前就想把这个知识点整理下 ...

  4. 基于VC的串行通信技术应用实例

    在工业控制中,串口是常用的计算机与外部串行设备之间的数据传输通道,由于串行通信方便易行,所以应用广泛.   本文将介绍在Windows平台下串行通信的工作机制和用Visual C++设计串行通信程序的 ...

  5. Linux命令学习计划【sed】

    引言: Sed命令是linux里用于文本行处理的命令. 为了便于说明,我在/usr/dict下创建了字典words并以此作为演示模板 先用nl 打印下words内容: *打印篇: Q1:如何打印某一行 ...

  6. 数据库备份工具mysqldump重要参数详解

    1. --single-transaction InnoDB 表在备份时,通常启用选项 --single-transaction 来保证备份的一致性,实际上它的工作原理是设定本次会话的隔离级别为:RE ...

  7. [标签] action的使用

    1.描述 This tag enables developers to call actions directly from a JSP page by specifying the action n ...

  8. 用zepto找到当前被选中的option

    $("#dealer").find("option").not(function(){ return !this.selected }).text(); 神奇的 ...

  9. thinkphp ajax 实例 实现

    thinkPHP后台实现 #删除用户操作      function delete()      {        if(isset($_SERVER["HTTP_X_REQUESTED_W ...

  10. a标签无disabled属性

    <a class="button">确认</a> 我们经常会用a标签来设置按钮样式,如果点击它跳转页面,那么没有任何问题. 如果绑定了ajax事件,即点击后 ...