android面试之contentProvider获取联系人

1.使用contentprovider查找联系人

MainActivity.java

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		getContacts();
	}

	private void getContacts() {
		// 得到ContentResolver对象
		ContentResolver cr = this.getContentResolver();
		// 取得电话本中开始一项的光标,主要就是查询"contacts"表
		Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
		while (cursor.moveToNext())
		{
			StringBuilder sbLog = new StringBuilder();

		    // 取得联系人名字 (显示出来的名字),实际内容在 ContactsContract.Contacts中
		   int nameIndex = cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
		   String name = cursor.getString(nameIndex);
		   sbLog.append("name=" + name + ";");

		    // 取得联系人ID
		    String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));   

		    // 根据联系人ID查询对应的电话号码
		    Cursor phoneNumbers = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = "
		            + contactId, null, null);
		    // 取得电话号码(可能存在多个号码)
		    while (phoneNumbers.moveToNext())
		    {
		        String strPhoneNumber = phoneNumbers.getString(phoneNumbers.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
		        sbLog.append("Phone=" + strPhoneNumber + ";");
		    }
		    phoneNumbers.close(); 

		    // 根据联系人ID查询对应的email
		    Cursor emails = cr.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, null, ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = "
		            + contactId, null, null);
		    // 取得email(可能存在多个email)
		    while (emails.moveToNext())
		    {
		        String strEmail = emails.getString(emails.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
		        sbLog.append("Email=" + strEmail + ";");
		    }
		    emails.close(); 

		    Log.i("TAG", sbLog.toString());
		}
		cursor.close();
	}

}
时间: 2024-10-24 20:10:36

android面试之contentProvider获取联系人的相关文章

Android通讯录管理(获取联系人、通话记录、短信消息)(二)

http://blog.csdn.net/wwj_748/article/details/19970271 Android通讯录管理(获取联系人.通话记录.短信消息)(二) 2014-02-26 11:40 9076人阅读 评论(11) 收藏 举报  分类: [Android通讯录模块开发](10)  版权声明:本文为博主原创文章,未经博主允许不得转载. Android通讯录管理(获取联系人.通话记录.短信消息)(二) 前言:上一篇博客介绍的是获取联系人的实现,本篇博客将介绍通话记录的实现. 同

android通过查询电话号码获取联系人信息

[java] view plaincopyprint? // 取得Intent中的頭像 ivShowImage = (ImageView) findViewById(R.id.call_log_detail_contact_img); //通话电话号码获取头像uri Uri uriNumber2Contacts = Uri .parse("content://com.android.contacts/" + "data/phones/filter/" + strPh

Android 开发 ContentProvider 获取歌曲列表和联系人的样例

ContentProvider(内容提供者)是Android中的四大组件之中的一个. 主要用于对外共享数据.也就是通过ContentProvider把应用中的数据共享给其它应用訪问.其它应用能够通过ContentProvider对指定应用中的数据进行操作.ContentProvider分为系统的和自己定义的,系统的也就是比如联系人,图片等数据. 下面这段是Google Doc中对ContentProvider的大致概述. 内容提供者将一些特定的应用程序数据供给其他应用程序使用. 数据能够存储于文

Android 开发 ContentProvider 获取歌曲列表和联系人的例子

ContentProvider(内容提供者)是Android中的四大组件之一.主要用于对外共享数据,也就是通过ContentProvider把应用中的数据共享给其他应用访问,其他应用可以通过ContentProvider对指定应用中的数据进行操作.ContentProvider分为系统的和自定义的,系统的也就是例如联系人,图片等数据. 以下这段是Google Doc中对ContentProvider的大致概述. 内容提供者将一些特定的应用程序数据供给其它应用程序使用.数据可以存储于文件系统.SQ

关于ContentProvider的一些例子(获取联系人)

ContentResolver:是Android的四大组件之一,主要用于对外共享数据. Android提供了一些主要数据类型的ContentProvider,比如音频.视频.图片和私人通讯录等.前提是已经获取其权限. 主要方法 public boolean onCreate() 在创建ContentProvider时调用public Cursor query(Uri, String[], String, String[], String) 查询ContentProvider,返回一个Cursor

Android通讯录管理一之联系人获取

正如我们知道的一样,Android的通讯录和短信管理是通过contentprovider来向开发者来开发接口的.必须从ContentResolver入手去解决.其中通讯录操作涉及到系统源码api的使用,特别是在表的uri上面容易弄混.在接下来的几篇文章中蜗牛将陆续为大家推出Android通讯管理相关知识的文章.其中包括联系人获取.通话记录获取.短信获取.短信详情获取发送短信.废话不多说先上图 先看看联系人的表的结构 其中对于开发这来说主要关注以上三个表,其中要用到联合查询,关于三张表的设计可以百

用ContentProvider获取通讯录联系人

手机中的联系人数据实际是保存在数据库中的,但Android并没有让我们通过操作数据库去读取数据,而是通过一个ContractProvider这个应用提供了一个ContentProvider访问接口. 获取email的方法与获取电话号码相同. 具体实现过程如下: 添加应用权限: <uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name

【Android Developers Training】 99. 获取联系人详细信息

注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer.android.com/training/contacts-provider/retrieve-details.html 这节课将会展示如何获取一个联系人的详细数据,比如电子邮件地址,电话号码,等等.当用户获得一个联系人后,他会想要查看他的详细信息.你可以展示给他们所有的信息,或者只展示某一特定类

Android 获取联系人手机号码、姓名、地址、公司、邮箱、生日

public void testGetAllContact() throws Throwable { //获取联系人信息的Uri Uri uri = ContactsContract.Contacts.CONTENT_URI; //获取ContentResolver ContentResolver contentResolver = ContactListActivity.this.getContentResolver(); //查询数据,返回Cursor Cursor cursor = con