讀取手機聯絡人實例

項目中需要做一個關於聯絡人的模塊,先搭建了一個demo.順便總結查詢手機聯絡人的名字和號碼的知識

例子很簡單,直接貼代碼:

   

package com.kris.contacts;

import java.util.ArrayList;

import android.app.Activity;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class MainActivity extends Activity {
	
	private static Uri URI_PHONE = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
	private static Uri URI_DATA = ContactsContract.Data.CONTENT_URI;
	
	static private String[] CONTACTS_PHONE = new String[] {
		ContactsContract.CommonDataKinds.Phone.CONTACT_ID,
		ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
		ContactsContract.CommonDataKinds.Phone.NUMBER};

	static private String[] CONTACTS_DATA = new String[] {
		ContactsContract.CommonDataKinds.StructuredName.CONTACT_ID,
		ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME,
		ContactsContract.CommonDataKinds.StructuredName.PREFIX,
		ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME,
		ContactsContract.CommonDataKinds.StructuredName.MIDDLE_NAME,
		ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME,
		ContactsContract.CommonDataKinds.StructuredName.SUFFIX };
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		
		setContentView(R.layout.activity_main);
		ListView txv = (ListView) findViewById(R.id.lsv_contact);
		
        String sortOrder = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC";
		Cursor curPhone = getContentResolver().query(URI_PHONE, CONTACTS_PHONE, null, null, sortOrder);
		int m_intContactDiaplayName = curPhone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME);
		int m_intPhone = curPhone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
		ArrayList<String> m_aryContactsData = new ArrayList<String>(); 
   		if (curPhone.moveToFirst()){
   			do
   			{                  
   				// 自 curPhone 中取出各自欄位的資料
   				String m_strContactDiaplayName = curPhone.getString(m_intContactDiaplayName);                  
   				String m_strPhone = curPhone.getString(m_intPhone);
   				
   				// 若此人資料已經存在,就不重覆加入
   				int iContactPos = m_aryContactsData.indexOf(m_strContactDiaplayName + "\n<" + m_strPhone + ">");
   	    		if (iContactPos < 0){
   	    			m_aryContactsData.add(m_strContactDiaplayName + "\n<" + m_strPhone + ">");
   	    		}
   			}while(curPhone.moveToNext());
   		}
   		ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_single_choice,
				m_aryContactsData.toArray(new String[m_aryContactsData.size()]));
   		txv.setAdapter(adapter);
	}

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章