1. 程式人生 > >Android獲取全部聯絡人資訊的例子

Android獲取全部聯絡人資訊的例子

先定義一個顯示條目的xml佈局檔案

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/tv_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dip"
        android:layout_marginTop="10dip"
        android:text="姓名:"
        android:textColor="#000000"
        android:textSize="20dp" />

    <TextView
        android:id="@+id/tv_phone"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_marginLeft="10dip"
        android:layout_marginRight="80dp"
        android:layout_marginTop="10dip"
        android:drawableLeft="@android:drawable/ic_menu_call"
        android:text="電話號"
        android:textColor="#000000"
        android:textSize="20dp" />

</RelativeLayout>

在來程式中實現以下邏輯
package com.wzw.test;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.ContentResolver;
import android.database.Cursor;
import android.view.Menu;
import android.widget.ListView;
import android.widget.SimpleAdapter;

public class SelectContactActivity extends Activity {

	private ListView list_select_contact;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_select_contact);
		list_select_contact=(ListView) findViewById(R.id.list_select_contact);
		List<Map<String, String>> data = getContactInfo();
		list_select_contact.setAdapter(new SimpleAdapter(this, data	, R.layout.contact_item, new String[] { "name", "phone" }, new int[] { R.id.tv_name, R.id.tv_phone}));
	}
	
	/**
	 * 獲取所有聯絡人資訊
	 * @return
	 */
	private List<Map<String, String>> getContactInfo() {


		//存放所有的聯絡人
		List<Map<String, String>> list  = new ArrayList<Map<String,String>>();

		// 得到一個內容解析器
		ContentResolver resolver = getContentResolver();
		// raw_contacts uri
		Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");
		Uri uriData = Uri.parse("content://com.android.contacts/data");

		Cursor cursor = resolver.query(uri, new String[] { "contact_id" },
				null, null, null);

		while (cursor.moveToNext()) {
			String contact_id = cursor.getString(0);
			
			if (contact_id != null) {
				//具體的某一個聯絡人
				Map<String, String> map = new HashMap<String, String>();
				
				Cursor dataCursor = resolver.query(uriData, new String[] {
						"data1", "mimetype" }, "contact_id=?",
						new String[] { contact_id }, null);
				
				while (dataCursor.moveToNext()) {
					String data1 = dataCursor.getString(0);
					String mimetype = dataCursor.getString(1);
					System.out.println("data1=="+data1+"==mimetype=="+mimetype);
					
					if("vnd.android.cursor.item/name".equals(mimetype)){
						//聯絡人的姓名
						map.put("name", data1);
					}else if("vnd.android.cursor.item/phone_v2".equals(mimetype)){
						//聯絡人的電話號碼
						map.put("phone", data1);
					}
					
				}
				list.add(map);
				dataCursor.close();
			}

		}
		cursor.close();
		return list;
	}


}
主要是運用內容提供者來操作資料庫,比較常用的程式碼,方便以後copy