读取通讯录的方法

读取打印出来:
package com.example.readcontacts.test;

import android.content.ContentResolver;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
import android.test.AndroidTestCase;

public class ReadContacts extends AndroidTestCase {
	
	@Override
	public Context getContext() {
		
		return super.getContext();
	}

	public void testReadContacts(){
		
		ContentResolver contentResolver = this.getContext().getContentResolver();
		
		// contacts2.db  查询 raw_contacts 表 里_id
		Uri raw_contacts_uri = Uri.parse("content://com.android.contacts/raw_contacts");
		
		// data 表
		Uri dataUri = Uri.parse("content://com.android.contacts/data");
		
		Cursor cursor = contentResolver.query(raw_contacts_uri, new String[]{"_id"}, null, null, null);
		
		System.out.println("总计联系人 : " + cursor.getCount());
		
		while (cursor.moveToNext()) {
			
			long id = cursor.getInt(0);		//得到所有的_id 可知有多少联系人

			System.out.println("id : " + id);
			/*
			 * 通过的到的id来查询data表中的数据
			 * uri :	   dataUri 查询的表
			 * projection: new String[]{"mimetype","data1"} 查询要求返回的结果   【mimetype】 数据类型 电话号码,姓名 ...【data1】对应的数据 电话 
			 * selection:  "raw_contact_id=?" 查询的条件
			 * selectionArgs: new String[]{id + ""} 查询的条件 ?的值
			 * sortOrder:     查询的顺序
			 */

			Cursor c = contentResolver.query(dataUri, new String[]{"mimetype","data1"}, "raw_contact_id=?", new String[]{id + ""}, null);
			
			while(c.moveToNext()){
				
				String mimetype = c.getString(0);
				String data1 = c.getString(1);
				System.out.println("通讯录:" + "::	" + mimetype + "##	" + data1);
			}
		
			
		}
	}

}

配置文件信息:



    
    
	<--!添加读取通讯录的权限-->
    

    
        
    


查询这几张表即可得到联系人电话号码:

raw_contacts 查询主键得到联系人的_id


Data 联系人_id赋值给raw_contact_id 查询得到data1的数据

 读取通讯录的方法_第1张图片

Mimetypes表即是数据类型对应表


读取通讯录的方法_第2张图片





你可能感兴趣的:(Android小方案集)