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程序设计有所帮助。
相关文章
Android App中用Handler实现ViewPager页面的自动切换
这篇文章主要介绍了Android App中用Handler实现ViewPager页面的自动切换的方法,类似于相册自动播放,主要是切换后要提示当前页面所在的位置,需要的朋友可以参考下2016-05-05Android之PreferenceActivity应用详解(2)
看到很多书中都没有对PreferenceActivity做介绍,而我正好又在项目中用到,所以就把自己的使用的在这总结一下,也方便日后查找2012-11-11解决Android studio 2.3升级到Android studio 3.0 后apt报错问题
原来项目在Android studio 2.3一切正常,升级到了3.0之后报错,不支持apt了,其实解决这个问题很简单,只需要修改两点内容就可以,下面脚本之家小编带领大家通过本文学习吧2017-12-12Android使用SharedPreferences存储数据的实现方法
这篇文章主要介绍了Android使用SharedPreferences存储数据的实现方法,可实现针对短信的临时保存功能,非常简单实用,需要的朋友可以参考下2016-06-06Android adb安装apk时提示Invalid APK file的问题
这篇文章主要介绍了Android adb安装apk时提示Invalid APK file的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-08-08Android Studio配置Kotlin开发环境详细步骤
这篇文章主要介绍了Android Studio配置Kotlin开发环境详细步骤的相关资料,需要的朋友可以参考下2017-05-05解决android studio android monitor打不开的问题
下面小编就为大家分享一篇解决android studio android monitor打不开的问题,具有很的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2018-01-01
最新评论