添加权限:
<uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>
try {
/* 必须要有android.permission.READ_CONTACTS权限 */
Cursor cursor = managedQuery(
android.provider.ContactsContract.Contacts.CONTENT_URI,
null, null, null, null);
/* 将Cursor移到资料最前端 */
for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor
.moveToNext()) {
/* 取得联络人的姓名 */
String strName = cursor
.getString(cursor
.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME));
/* 取得联络人的电话 */
int contactId = cursor.getInt(cursor
.getColumnIndex(ContactsContract.Contacts._ID));
Cursor phones = getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID
+ " = " + contactId, null, null);
int typePhone, resType;
String numPhone;
if (phones.getCount() > 0) {
phones.moveToFirst();
/* 2.0可以允许User设定多组电话号码,但本范例只捞一组电话号码作示范 */
typePhone = phones
.getInt(phones
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE));
numPhone = phones
.getString(phones
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
resType = ContactsContract.CommonDataKinds.Phone
.getTypeLabelResource(typePhone);
addItem(strName, getString(resType) + ":" + numPhone);//添加到ListView中,此代码略去
}
}
} catch (Exception e) {
e.printStackTrace();
}
根据号码查找联系人
public String getContactPeople(String incomingNumber) {
String contactPeople = "";
ContentResolver contentResolver = getContentResolver();
Cursor cursor = null;
/* cursor里要放的字段名称 */
String[] projection = new String[] { ContactsContract.Contacts._ID,
ContactsContract.Contacts.DISPLAY_NAME,
ContactsContract.CommonDataKinds.Phone.NUMBER };
/* 用来电电话号码查找该联系人 */
cursor = contentResolver.query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI, projection,
ContactsContract.CommonDataKinds.Phone.NUMBER + "=?",
new String[] { incomingNumber }, "");
/* 找不到联系人 */
if (cursor.getCount() == 0) {
contactPeople = "未知联系人";
} else if (cursor.getCount() > 0) {
cursor.moveToFirst();
/* projection这个数组里 */
contactPeople = cursor.getString(1);
}
return contactPeople;
}
根据联系人查找号码
/* 以联系人名称搜索通信录中联系人的电话的method */
private String getContactPeople(String name) {
String result = "";
ContentResolver contentResolver = EX06_23.this.getContentResolver();
Cursor cursor = null;
/* 要搜索的字段名称 */
String[] projection = new String[] { ContactsContract.CommonDataKinds.Phone.NUMBER };
/* 以联系人的名字去找该联系人的电话 */
cursor = contentResolver.query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI, projection,
ContactsContract.Contacts.DISPLAY_NAME + "=?",
new String[] { name }, "");
if (cursor.getCount() != 0) {
cursor.moveToFirst();
/* 取得联系人电话 */
result = cursor.getString(0);
}
return result;
}