码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-05-07 16:44:23      阅读:105      评论:0      收藏:0      [点我收藏+]

标签:

效果

技术分享

布局文件

<?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);

            }
        });

    }
}

注意:

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

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

标签:

原文地址:http://blog.csdn.net/a910626/article/details/45562551

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!