项目中需要做一个关于联络人的模块,先搭建了一个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);
}
}