码迷,mamicode.com
首页 > 移动开发 > 详细

Android(java)学习笔记251:ContentProvider使用之添加数据到联系人

时间:2015-09-15 10:47:59      阅读:235      评论:0      收藏:0      [点我收藏+]

标签:

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", "bujingyun@163.com");
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)布署程序到模拟器上,如下:

技术分享

 

 

我们先看看系统通信录里面存在的数据,如下:

技术分享

 

我们点击"添加一条联系人数据",如下:

技术分享

 

技术分享

技术分享

 

Android(java)学习笔记251:ContentProvider使用之添加数据到联系人

标签:

原文地址:http://www.cnblogs.com/hebao0514/p/4809461.html

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