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 ...
随机推荐
- 功能齐全并且比较时髦的Jquery通用开源框架之【ejq.js】
简介 ejq是一款非常小巧的JS工具库,未压缩才50K,在jquery的基础上对jquery缺失部分作了很好的弥补作用. 优点: 1.具有内置的模板解析引擎语法和angularjs相近减少学习成本 2 ...
- Bootstrap+angularjs+MVC3+分页技术+角色权限验证系统
1.Bootstrap使用教程 相关教程: http://www.bootcss.com/components.html 页面使用代码: <script src="@Url.Conte ...
- Auto Mapper04(MVC中的配置)
学习如何在MVC项目中配置AutoMapper. 一:首先在MVC项目中引用AutoMapper的DLL文件,接着创建一个接口,这里面我们需要定义两个方法,接口里面的方法只能定义不能实现,也没有什么修 ...
- 打开IE错误解决方法
1. 502.1 Internal Server Error Handle svc-Integraged has a bad module ManagedPipelineHandle解决方法:此种情况 ...
- 循序渐进开发WinForm项目(6)--开发使用混合式Winform模块
1.Winform数据访问模式定义 传统的Winform程序模块:用于传统的数据库通讯获取数据,这种方式获取数据,方便快捷,可以用于常规的业务系统的场景,用于单机版软件或者基于局域网内的业务系统软件. ...
- .NET Core 单元测试 MSTest
.NET Core 单元测试 MSTest ,MSTest Framework 已经支持 .NET Core RC2 / ASP.NET Core RC2. 之前都是使用 xUnit.net ,现在 ...
- C#使用读写锁三行代码简单解决多线程并发写入文件时线程同步的问题
(补充:初始化FileStream时使用包含文件共享属性(System.IO.FileShare)的构造函数比使用自定义线程锁更为安全和高效,更多内容可点击参阅) 在开发程序的过程中,难免少不了写入错 ...
- 关于c++操作符的优先级
优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级. 所有的优先级中,只有三个优先级是从右至左结合的,它们是单目运算符.条件运算符.赋值运算符.其它的都是从左至右结合. 具有最 ...
- c#中高效的excel导入sqlserver的方法
将oledb读取的excel数据快速插入的sqlserver中,很多人通过循环来拼接sql,这样做不但容易出错而且效率低下,最好的办法是使用bcp,也就是System.Data.SqlClient.S ...
- Oracle数据库建表并用SQL编程分等级
--创建学生表create table XS_543 ( XH char(6) not null , XM varchar2(20) not null, ZYM varchar2(10), XB ch ...