【contentprovider系列】增加联系人信息

效果

布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
        >

    <EditText
            android:id="@+id/name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="请输入名字"
            />

    <EditText
            android:id="@+id/phone"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="请输入手机号"
            />

    <EditText
            android:id="@+id/email"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="请输入邮箱"
            />

    <Button
            android:id="@+id/add"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="add"
            android:onClick="addOnClick"
            />
</LinearLayout>

mainactivity书写

package com.ht.demo01;

import android.app.Activity;
import android.content.ContentResolver;
import android.content.ContentUris;
import android.content.ContentValues;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity {

    private EditText name;
    private EditText phone;
    private Button add;
    private EditText email;

    /**
     * Called when the activity is first created.
     */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        name = (EditText) findViewById(R.id.name);
        phone = (EditText) findViewById(R.id.phone);
        email = (EditText) findViewById(R.id.email);
        add = (Button) findViewById(R.id.add);

        add.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String nameStr = name.getText().toString();
                String phoneStr = phone.getText().toString();
                String emailStr = email.getText().toString();

                ContentResolver cr = getContentResolver();
                //创建一个空的contentvalues
                ContentValues values = new ContentValues();
                //向raw_contacts表中插入一个空的数据,目的是获得系统返回的rawcontactsid
                Uri rawContactsUri = cr.insert(ContactsContract.RawContacts.CONTENT_URI, values);
                long rawContactsId = ContentUris.parseId(rawContactsUri);
                values.clear();

                //添加姓名(对应data表中一行)
                //先往data表中添加一次rawcontactsid,建立data表和rawcontacts表的联系
                values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactsId);
                values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE);
                //添加联系人的姓名,一般都是存在data表的data1字段
                values.put("data1", nameStr);
                cr.insert(ContactsContract.Data.CONTENT_URI, values);

                //添加电话(对应data表中新起的一行)
                values.clear();
                //因为是data表中新的一行,还是需要把rawcontactid再添加一遍的
                values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactsId);
                //添加内容类型列
                values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);
                //添加电话,一般都是存在data表的data1字段
                values.put("data1", phoneStr);
                cr.insert(ContactsContract.Data.CONTENT_URI, values);

                //添加邮箱(对应data表中新起的一行)
                values.clear();
                //因为是data表中新的一行,还是需要把rawcontactid再添加一遍的
                values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactsId);
                //添加内容类型列
                values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE);
                //添加电话,一般都是存在data表的data1字段
                values.put("data1", emailStr);
                cr.insert(ContactsContract.Data.CONTENT_URI, values);

            }
        });

    }
}

注意:

不要忘记添加权限,区分大小写

时间: 2024-10-14 16:28:23

【contentprovider系列】增加联系人信息的相关文章

基础总结篇之六:ContentProvider之读写联系人

靡不有初,鮮克有終.<詩經> 很多事情,绝大多数人都会在开始的时候满怀热情,而能坚持到底的却是寥寥无几.对待自己的目标,虎头蛇尾绝不可取,半途而废只会一无所成,我们必须持之以恒的做下去,坚持到底才能摘取胜利的果实.最近也忙了起来,忙着给自己充电,深知这项任务的艰巨,不是一天两天的事,所以也借用这句警言来告诫自己,坚持不懈的走下去. 今天我们来讲解一下如何利用ContentProvider机制读写联系人信息. 在Android中,ContentProvider是一种数据包装器,适合在不同进程间实

无废话Android之内容观察者ContentObserver、获取和保存系统的联系人信息、网络图片查看器、网络html查看器、使用异步框架Android-Async-Http(4)

1.内容观察者ContentObserver 如果ContentProvider的访问者需要知道ContentProvider中的数据发生了变化,可以在ContentProvider 发生数据变化时调用getContentResolver().notifyChange(uri, null)来通知注册在此URI上的访问者,例子如下: private static final Uri URI = Uri.parse("content://person.db"); public class

Android手机获取通讯录联系人信息及短信广播实现

现在越来越多的android应用在注册时都要用到手机号码,通过获取手机验证码来完成注册.也有不少应用提供了手机通讯录备份功能,获得你的允许后把你的通讯录中的手机号码保存到服务器中,你要的时候又可以down下来,比如微信,QQ等就有这们的功能.那我们怎么样获取用户通讯录中的手机号码呢?Android已经为我们做好了准备: ---------------------------------获取通讯录联系人信息----------------------------------------------

Jsoup抓取、解析网页和poi存取excel综合案例——采集网站的联系人信息

需求:采集网站中每一页的联系人信息 一.创建maven工程,添加jsoup和poi的依赖包 <!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.16-be

[android] 获取系统的联系人信息

内容提供是实质上是个接口,后门,他给别人提供数据,系统联系人是个比较复杂的内容通过者. 找到/data/data/com.android.providers.contacts/contacts2.db 这个目录下还有个文件contacts2.db.-journal,这个文件和数据库的事务相关 联系人应用数据库的主要结构 raw_contacts 联系人表 contact_id 联系人id data数据表  raw_contact_id联系人id,mimetype_id数据类id,data1数据

php课程---练习(联系人信息表)

做一个联系人表,实现增删改功能 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equi

IOS-系统API调用联系人信息

.h文件 //系统自带的联系人framework #import <AddressBook/AddressBook.h> #import <AddressBookUI/AddressBookUI.h> 加委托 ABPeoplePickerNavigationControllerDelegate { UITextField * aPhoneField;//患者手机号Field } /* picker 系统内置的联系人view对象 @property (nonatomic)ABPeop

Java工具类:给程序增加版权信息

我们九天鸟的p2p网贷系统,基本算是开发完成了.   现在,想给后端的Java代码,增加版权信息.   手动去copy-paste,太没有技术含量. 于是,写了个Java工具类,给Java源文件增加版权信息.   源代码,开头的注释,就是版权描述.详细实现,就看代码吧.  /*  *Copyright ? 2015 JiuTianNiao  *武汉九天鸟科技有限公司  *http://JiuTianNiao.com  *All rights reserved.  */ package com.j

Android学习笔记(四七):Content Provider初谈和Android联系人信息

Content Provider 在数据处理中,Android通常使用Content Provider的方式.Content Provider使用Uri实例作为句柄的数据封装的,很方便地访问地进行数据的增.删.改.查的操作.Android并不提供所有应用共享的数据存储,采用content Provider,提供简单便捷的接口来保持和获取数据,也可以实现跨应用的数据访问.简单地说,Android通过content Provider从数据的封装中获取信息. Content provider使用Uri