1.添加联系人逻辑思路
(1)首先在raw_contacts创建一个新的id
(2)在data表里面添加这个id对应的数据
2.下面通过一个案例,说明一下如何添加一条数据到联系人:
(1)首先我们关注一下布局文件,activity_main.xml,如下:
1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 android:paddingBottom="@dimen/activity_vertical_margin" 6 android:paddingLeft="@dimen/activity_horizontal_margin" 7 android:paddingRight="@dimen/activity_horizontal_margin" 8 android:paddingTop="@dimen/activity_vertical_margin" 9 tools:context="com.himi.addcontact.MainActivity" > 10 11 <Button 12 android:onClick="click" 13 android:layout_width="wrap_content" 14 android:layout_height="wrap_content" 15 android:layout_centerHorizontal="true" 16 android:layout_centerVertical="true" 17 android:text="添加一条联系人数据" /> 18 19 </RelativeLayout>
布局效果如下:
(2)其次是MainActivity,如下:
1 package com.himi.addcontact; 2 3 import android.app.Activity; 4 import android.content.ContentResolver; 5 import android.content.ContentValues; 6 import android.database.Cursor; 7 import android.net.Uri; 8 import android.os.Bundle; 9 import android.view.View; 10 import android.widget.Toast; 11 12 public class MainActivity extends Activity { 13 14 @Override 15 protected void onCreate(Bundle savedInstanceState) { 16 super.onCreate(savedInstanceState); 17 setContentView(R.layout.activity_main); 18 } 19 20 //添加一条联系人信息到系统的数据库 21 public void click(View view) { 22 Uri uri = Uri.parse("content://com.android.contacts/raw_contacts"); 23 Uri datauri = Uri.parse("content://com.android.contacts/data"); 24 //获得ContentProvider的解析器 25 ContentResolver resolver = this.getContentResolver(); 26 //1.在raw_contace表里面添加一条新的id _id desc:表示按照id降序排列 27 Cursor cursor = resolver.query(uri, new String[]{"_id"}, null, null, "_id desc"); 28 cursor.moveToFirst(); 29 int _id = cursor.getInt(0);//之前,降序排列,这里获得表中最大id值 30 //计算出来新添加的条目的id 31 int newId = _id+1; 32 ContentValues values = new ContentValues(); 33 values.put("contact_id", newId); 34 resolver.insert(uri, values); 35 36 //2.在data表中添加对应的数据 37 //添加电话号码phone 38 ContentValues phoneValue = new ContentValues(); 39 phoneValue.put("raw_contact_id", newId); 40 phoneValue.put("mimetype", "vnd.android.cursor.item/phone_v2"); 41 phoneValue.put("data1", "123456"); 42 resolver.insert(datauri, phoneValue); 43 //添加姓名 44 ContentValues nameValue = new ContentValues(); 45 nameValue.put("raw_contact_id", newId); 46 nameValue.put("mimetype", "vnd.android.cursor.item/name"); 47 nameValue.put("data1", "步惊云"); 48 resolver.insert(datauri, nameValue); 49 //添加email 50 ContentValues emailValue = new ContentValues(); 51 emailValue.put("raw_contact_id", newId); 52 emailValue.put("mimetype", "vnd.android.cursor.item/email_v2"); 53 emailValue.put("data1", "[email protected]"); 54 resolver.insert(datauri, emailValue); 55 56 Toast.makeText(this, "添加成功", 0).show(); 57 } 58 } 59
(3)最后记得添加权限,如下:
1 <?xml version="1.0" encoding="utf-8"?> 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android" 3 package="com.himi.addcontact" 4 android:versionCode="1" 5 android:versionName="1.0" > 6 7 <uses-sdk 8 android:minSdkVersion="15" 9 android:targetSdkVersion="17" /> 10 <uses-permission android:name="android.permission.READ_CONTACTS"/> 11 <uses-permission android:name="android.permission.WRITE_CONTACTS"/> 12 13 <application 14 android:allowBackup="true" 15 android:icon="@drawable/ic_launcher" 16 android:label="@string/app_name" 17 android:theme="@style/AppTheme" > 18 <activity 19 android:name=".MainActivity" 20 android:label="@string/app_name" > 21 <intent-filter> 22 <action android:name="android.intent.action.MAIN" /> 23 24 <category android:name="android.intent.category.LAUNCHER" /> 25 </intent-filter> 26 </activity> 27 </application> 28 29 </manifest>
(4)布署程序到模拟器上,如下:
我们先看看系统通信录里面存在的数据,如下:
我们点击"添加一条联系人数据",如下:
时间: 2024-10-02 02:59:56