当前位置:编程学习 > JAVA >>

使用ContentProvider管理联系人

Android系统提供了Contacts应用程序来管理联系人,而且还为联系人管理提供了ContentProvider。

下面通过一个实例来演示,实现查询系统所有联系人的姓名及其详细信息和添加联系人,代码如下:

读取联系人的Activity:
[java]
package com.lovo.activity; 
 
import java.util.ArrayList; 
 
import android.app.Activity; 
import android.content.Intent; 
import android.database.Cursor; 
import android.os.Bundle; 
import android.provider.ContactsContract; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.ViewGroup; 
import android.widget.BaseExpandableListAdapter; 
import android.widget.Button; 
import android.widget.ExpandableListView; 
import android.widget.TextView; 
 
import com.lovo.lesson15.R; 
 
/**
 * 读取联系人的Activity
 * 
 * @author Administrator
 * 
 */ 
public class ReadContactActivity extends Activity { 
 
    /**
     * 保存联系人的姓名集合
     */ 
    private ArrayList<String> namesList = new ArrayList<String>(); 
    /**
     * 保存联系人详细信息的集合
     */ 
    private ArrayList<ArrayList<String>> infoList = new ArrayList<ArrayList<String>>(); 
    private ExpandableListView elv; 
    private Button addContactBtn; 
    private BaseExpandableListAdapter adapter; 
 
    /**
     * 初始化集合
     */ 
    public void initData() { 
        namesList.clear(); 
        infoList.clear(); 
        // 查询联系人的基本信息  
        // 系统联系人的URI:ContactsContract.Contacts.CONTENT_URI  
        Cursor cursor = getContentResolver().query( 
                ContactsContract.Contacts.CONTENT_URI, null, null, null, null); 
        while (cursor.moveToNext()) { 
            // 获取联系人的ID  
            int contactId = cursor.getInt(cursor 
                    .getColumnIndex(ContactsContract.Contacts._ID)); 
            // 获取联系人的姓名  
            String name = cursor.getString(cursor 
                    .getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 
            namesList.add(name); 
 
            // 存放每个联系人里面详细信息的集合,里面有电话号码和email  
            ArrayList detailList = new ArrayList(); 
            // 查找电话号码  
            // 获取系统联系人电话号码的URI:ContactsContract.CommonDataKinds.Phone.CONTENT_URI  
            // 电话号码数据中对应联系人的ID列名:ContactsContract.CommonDataKinds.Phone.CONTACT_ID  
            Cursor phoneCursor = getContentResolver().query( 
                    ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
                    null, 
                    ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=" 
                            + contactId, null, null); 
            while (phoneCursor.moveToNext()) { 
                String phoneNumber = phoneCursor 
                        .getString(phoneCursor 
                                .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
                detailList.add(phoneNumber); 
            } 
            phoneCursor.close(); 
 
            // 查找联系人的email  
            // 获取联系人email的URI:ContactsContract.CommonDataKinds.Email.CONTENT_URI  
            // email数据中对应联系人的ID列名:ContactsContract.CommonDataKinds.Email.CONTACT_ID  
            Cursor emailCursor = getContentResolver().query( 
                    ContactsContract.CommonDataKinds.Email.CONTENT_URI, 
                    null, 
                    ContactsContract.CommonDataKinds.Email.CONTACT_ID + "=" 
                            + contactId, null, null); 
            while (emailCursor.moveToNext()) { 
                String email = emailCursor 
                        .getString(emailCursor 
              

补充:软件开发 , Java ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,