Android编程实现通讯录中联系人的读取,查询,添加功能示例

本文实例讲述了Android编程实现通讯录中联系人的读取,查询,添加功能。分享给大家供大家参考,具体如下:

先加二个读和写权限:

<uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="android.permission.WRITE_CONTACTS" />

具体代码:

package com.eboy.test; import java.util.ArrayList; import android.content.ContentProviderOperation; import android.content.ContentResolver; import android.database.Cursor; import android.net.Uri; import android.test.AndroidTestCase; import android.util.Log; public class ContectTest extends AndroidTestCase { private static final String TAG = "TestContact"; //查询所有联系人的姓名,电话,邮箱 public void TestContact() throws Exception { Uri uri = Uri.parse("content://com.android.contacts/contacts"); ContentResolver resolver = getContext().getContentResolver(); Cursor cursor = resolver.query(uri, new String[]{"_id"}, null, null, null); while (cursor.moveToNext()) { int contractID = cursor.getInt(0); StringBuilder sb = new StringBuilder("contractID="); sb.append(contractID); uri = Uri.parse("content://com.android.contacts/contacts/" + contractID + "/data"); Cursor cursor1 = resolver.query(uri, new String[]{"mimetype", "data1", "data2"}, null, null, null); while (cursor1.moveToNext()) { String data1 = cursor1.getString(cursor1.getColumnIndex("data1")); String mimeType = cursor1.getString(cursor1.getColumnIndex("mimetype")); if ("vnd.android.cursor.item/name".equals(mimeType)) { //是姓名 sb.append(",name=" + data1); } else if ("vnd.android.cursor.item/email_v2".equals(mimeType)) { //邮箱 sb.append(",email=" + data1); } else if ("vnd.android.cursor.item/phone_v2".equals(mimeType)) { //手机 sb.append(",phone=" + data1); } } cursor1.close(); Log.i(TAG, sb.toString()); } cursor.close(); } //查询指定电话的联系人姓名,邮箱 public void testContactNameByNumber() throws Exception { String number = "18052369652"; Uri uri = Uri.parse("content://com.android.contacts/data/phones/filter/" + number); ContentResolver resolver = getContext().getContentResolver(); Cursor cursor = resolver.query(uri, new String[]{"display_name"}, null, null, null); if (cursor.moveToFirst()) { String name = cursor.getString(0); Log.i(TAG, name); } cursor.close(); } //添加联系人,使用事务 public void testAddContact() throws Exception { Uri uri = Uri.parse("content://com.android.contacts/raw_contacts"); ContentResolver resolver = getContext().getContentResolver(); ArrayList<ContentProviderOperation> operations = new ArrayList<ContentProviderOperation>(); ContentProviderOperation op1 = ContentProviderOperation.newInsert(uri) .withValue("account_name", null) .build(); operations.add(op1); uri = Uri.parse("content://com.android.contacts/data"); ContentProviderOperation op2 = ContentProviderOperation.newInsert(uri) .withValueBackReference("raw_contact_id", 0) .withValue("mimetype", "vnd.android.cursor.item/name") .withValue("data2", "龚小永") .build(); operations.add(op2); ContentProviderOperation op3 = ContentProviderOperation.newInsert(uri) .withValueBackReference("raw_contact_id", 0) .withValue("mimetype", "vnd.android.cursor.item/phone_v2") .withValue("data1", "13539777967") .withValue("data2", "2") .build(); operations.add(op3); ContentProviderOperation op4 = ContentProviderOperation.newInsert(uri) .withValueBackReference("raw_contact_id", 0) .withValue("mimetype", "vnd.android.cursor.item/email_v2") .withValue("data1", "asdfasfad@163.com") .withValue("data2", "2") .build(); operations.add(op4); resolver.applyBatch("com.android.contacts", operations); } }

完整实例代码点击此处本站下载。

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结》

希望本文所述对大家Android程序设计有所帮助。

时间: 2024-10-29 10:51:03

Android编程实现通讯录中联系人的读取,查询,添加功能示例的相关文章

Android编程实现Gallery中每次滑动只显示一页的方法_Android

本文实例讲述了Android编程实现Gallery中每次滑动只显示一页的方法.分享给大家供大家参考,具体如下: import android.content.Context; import android.util.AttributeSet; import android.view.KeyEvent; import android.view.MotionEvent; import android.widget.Gallery; public class DetialGallery extends

Android编程开发ScrollView中ViewPager无法正常滑动问题解决方法_Android

本文实例讲述了Android编程开发ScrollView中ViewPager无法正常滑动问题解决方法.分享给大家供大家参考,具体如下: 这里主要介绍如何解决ViewPager在ScrollView中滑动经常失效.无法正常滑动问题. 解决方法只需要在接近水平滚动时ScrollView不处理事件而交由其子View(即这里的ViewPager)处理即可,重写ScrollView的onInterceptTouchEvent函数,如下: package cc.newnews.view; import an

Android编程开发ScrollView中ViewPager无法正常滑动问题解决方法

本文实例讲述了Android编程开发ScrollView中ViewPager无法正常滑动问题解决方法.分享给大家供大家参考,具体如下: 这里主要介绍如何解决ViewPager在ScrollView中滑动经常失效.无法正常滑动问题. 解决方法只需要在接近水平滚动时ScrollView不处理事件而交由其子View(即这里的ViewPager)处理即可,重写ScrollView的onInterceptTouchEvent函数,如下: package cc.newnews.view; import an

Android编程实现Gallery中每次滑动只显示一页的方法

本文实例讲述了Android编程实现Gallery中每次滑动只显示一页的方法.分享给大家供大家参考,具体如下: import android.content.Context; import android.util.AttributeSet; import android.view.KeyEvent; import android.view.MotionEvent; import android.widget.Gallery; public class DetialGallery extends

Android编程仿Iphone拖动相片特效Gallery的简单应用示例_Android

本文实例讲述了Android编程仿Iphone拖动相片特效Gallery的简单应用.分享给大家供大家参考,具体如下: Step 1:准备图片素材. 将icon2,icon3,icon4,icon5,icon6五张图片导入res/drawable里加上icon.png本身一共有6张图片. Step 2:新建Android工程,命名为GalleryDemo. Step 3:设计UI,修改main.xml代码如下: <?xml version="1.0" encoding="

Android编程下拉菜单spinner用法小结(附2则示例)_Android

本文较为详细的总结分析了Android编程下拉菜单spinner用法.分享给大家供大家参考,具体如下: Spinner控件也是一种列表类型的控件,它的继承关系如下: java.lang.Object    ↳ android.view.View      ↳ android.view.ViewGroup        ↳ android.widget.AdapterView<Textends android.widget.Adapter>          ↳ android.widget.A

Android编程下拉菜单spinner用法小结(附2则示例)

本文较为详细的总结分析了Android编程下拉菜单spinner用法.分享给大家供大家参考,具体如下: Spinner控件也是一种列表类型的控件,它的继承关系如下: java.lang.Object    ↳ android.view.View      ↳ android.view.ViewGroup        ↳ android.widget.AdapterView<Textends android.widget.Adapter>          ↳ android.widget.A

Android编程实现使用Intent传输包含自定义类的ArrayList示例

本文实例讲述了Android编程实现使用Intent传输包含自定义类的ArrayList.分享给大家供大家参考,具体如下: 前言 之前项目中通过Intent只是传输简单的字符串,这次因为需要在前一个页面联网获取对象数据,然后在下一个页面使用,所以考虑到使用Intent传输包含自定义类的ArrayList. Serializable Java的对象序列化指的是将那些实现了Serializable接口的对象转换成一个字节序列,并且能在需要的时候再将这个字节序列完全恢复为之前的对象. 想实现对象的序列

Android基于widget组件实现物体移动/控件拖动功能示例_Android

本文实例讲述了Android基于widget组件实现物体移动/控件拖动功能.分享给大家供大家参考,具体如下: package com.sky; import android.app.Activity; import android.os.Bundle; import android.view.KeyEvent; import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickLi