项目中需要做一个关于联络人的模块,先搭建了一个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 + " <" + m_strPhone + ">"); if (iContactPos < 0){ m_aryContactsData.add(m_strContactDiaplayName + " <" + 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); } }