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

        }

    }

}
时间: 2024-10-23 03:51:43

Android 利用内容提供者添加联系人的操作的相关文章

Android基础笔记(十四)- 内容提供者读取联系人

利用内容提供者读取联系人 利用内容提供者插入联系人 内容观察者的原理 利用内容观察者监听系统应用数据库或者自己应用数据库的变化 利用内容提供者读取联系人 读取联系人相对于读取短信来说就复杂很多了,我们一步一步来吧. 先看看一下联系人的数据库,是位于什么地方! 既然很复杂,我们就一步步分析吧,我们把contacts2.db导出到电脑中,并使用SQLite数据库软件打开.你可以看到一大堆的表和视图,当然我们使用到的也只有三张.分别是raw_contacts.data.mimetypes分别存储着联系

Android 中内容提供者的使用

在Android中内容提供者主要是用于不同程序之间的数据共享.内容提供器的用法一般有两种,一种是使用现有的内容提供器来读取和操作相应程序的数据,另一种是创建自己的内容提供器,供其他的程序访问. 使用现有的内容提供器来读取和操作相应程序的数据 ContentResolve中提供了一系列的方法用于对数据进行增删改查的操作,其中,insert()用于添加数据,update()用于数据更新,delete()方法用于删除数据,query()用于数据的查询. 在ContentResolve中,使用内容URI

[Android Pro] 内容提供者ContentProvider的基本使用

一.ContentProvider简介 当应用继承ContentProvider类,并重写该类用于提供数据和存储数据的方法,就可以向其他应用共享其数据.ContentProvider为存储和获取数据提供了统一的接口.虽然使用其他方法也可以对外共享数据,但数据访问方式会因数据存储的方式而不同,如采用文件方式对外共享数据,需要进行文件操作读写数据:采用sharedpreferences共享数据,需要使用sharedpreferences API读写数据.而使用ContentProvider共享数据的

android之内容提供者解析

该系统有两个应用,比较繁琐.但是内容提供者是android里非常非常重要的一个内容,我们得好好学习下哦.先看效果图,我们提供了四个按钮,点击按钮便会进行相应的操作. 我们先看内容提供者所在的应用,代码结构: activity代码: [java] view plaincopy package cn.com.contentProvider; import android.app.Activity; import android.os.Bundle; import android.widget.Tex

Android中内容提供者ContentProvider实现数据库增删改查

1.我们首先new一个我们自己的类集成ContentProvider,并实现方法如下 package com.wzw.sqllitedemo.providers; import com.wzw.sqllitedemo.db.PersonSQLiteOpenHelper; import android.content.ContentProvider; import android.content.ContentUris; import android.content.ContentValues;

【android基础篇】利用内容提供者实现短信备份

I,准备工作 系统存储短信内容的目录为:/dada/dada/com.android.providers.telephony/databases/mmssms.db,我们找到对应的数据库文件. 我们可以发现该文件对于第三方而言,是不可读不可写的,这里则必须要使用内容提供者. 问题就来了:我不知道主机名,也就无法作为中间人去找证监会打探消息.其实,完全没有关系,我们可以翻阅安卓的源代码: \packages\providers\TelephonyProvider的清单文件,因为主机名都配置在清单文

利用内容观察者操作系统的联系人(查询,加入)

系统联系人的源代码包位于/data/data/com.android.providers.contacts文件夹下,导出contacts2,db.用SQLLite查看数据库结构: raw_contacts表:保存联系人的引用,当中contact_id存放联系人的id data表:联系人信息的详细数据 raw_contact_id与raw_contacts表中的contact_id相相应 data1表示联系人的详细数据信息, mimetype_id表示详细的类型,与mimetypes表的id相应

android contentprovider内容提供者

contentprovider内容提供者:让其他app可以访问私有数据库(文件) 1.AndroidManifest.xml 配置provider <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.dbtest&q

Android之内容提供者ContentProvider的总结

本文包含以下知识点: ContentProvider Uri 的介绍 ContentResolver: 监听ContentProvider的数据改变 一:ContentProvider部分 ContentProvider的作用: Content providers store and retrieve data and make it accessible to all applications. They're the only way to share data across applica