先加读和写权限:
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
获取所有联系人,方法1:
<span style="font-size:14px;">/**
* 获取联系人,方式1
*/
private void getContact1() {
String uristring = "content://com.android.contacts/contacts";
Uri uri = Uri.parse(uristring);
ContentResolver resolver = getApplicationContext().getContentResolver();
Cursor cursor = resolver.query(uri, new String[] { "_id" }, null, null,
null);
StringBuilder jpsb = new StringBuilder();
while (cursor.moveToNext()) {
int contactid = cursor.getInt(0);
jpsb = jpsb.append("contactid = " + contactid);
String uristring2 = "content://com.android.contacts/contacts/"
+ contactid + "/data";
Uri uri2 = Uri.parse(uristring2);
Cursor datacCursor = resolver.query(uri2, new String[] {
"mimetype", "data1", "data2" }, null, null, null);
while (datacCursor.moveToNext()) {
String type = datacCursor.getString(datacCursor
.getColumnIndex("mimetype"));
String data1 = datacCursor.getString(datacCursor
.getColumnIndex("data1"));
if (type.equals("vnd.android.cursor.item/name"))// 姓名
{
jpsb.append(",name =").append(data1);
} else if (type.equals("vnd.android.cursor.item/phone_v2")) {// 电话
jpsb.append(",phone = ").append(data1);
}
}
jpsb.append("\n");
if (datacCursor != null) {
datacCursor.close();
}
}
Log.i(TAG, jpsb.toString());
textView.setText(jpsb.toString());
if (cursor != null) {
cursor.close();
}
}</span>
获取联系人,方法2:
<span style="font-size:14px;">/**
* 获取联系人,方式2
*/
private void getContact2() {
string = "";
count = 0;
ContentResolver resolver = getApplicationContext().getContentResolver();
Cursor cursor = resolver.query(ContactsContract.Contacts.CONTENT_URI,
null, null, null, null);
while (cursor.moveToNext()) {
// 取得联系人的名字索引
int nameIndex = cursor.getColumnIndex(PhoneLookup.DISPLAY_NAME);
String contact = cursor.getString(nameIndex);
string += contact + ":";
// 取得联系人的ID索引值
String contactId = cursor.getString(cursor
.getColumnIndex(ContactsContract.Contacts._ID));
// 查询该位联系人的电话号码,类似的可以查询email,photo
Cursor phone = resolver.query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = "
+ contactId, null, null);// 第一个参数是确定查询电话号,第三个参数是查询具体某个人的过滤值
// 一个人可能有几个号码
while (phone.moveToNext()) {
String strPhoneNumber = phone
.getString(phone
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
string = string + strPhoneNumber + " ;";
}
string += "\n";
count++;
phone.close();
}
cursor.close();
Log.i(TAG, String.valueOf(count));
// 设置显示内容
textView.setText(string);
// 这里需要将String写入文件
}</span>
获取联系人,方法3:
public class GetNumber {
private static String number;
private static String contactName;
private static List<PhoneInfo> lists = new ArrayList<PhoneInfo>();
/**
* 获取通讯录中的联系人姓名及电话号码
*
* @param context
* @return
*/
public static List<PhoneInfo> getPhoneNum(Context context) {
Cursor cursor = context.getContentResolver().query(Phone.CONTENT_URI,
null, null, null, null);
while (cursor.moveToNext()) {
number = cursor.getString(cursor.getColumnIndex(Phone.NUMBER));
contactName = cursor.getString(cursor
.getColumnIndex(Phone.DISPLAY_NAME));
PhoneInfo info = new PhoneInfo(number, contactName);
// System.out.println("number :" + number + ",name: " +
// contactName);
lists.add(info);
}
return lists;
}
}
<span style="font-size:14px;">/**
* 在同一个事务中完成联系人各项数据的添加
*
* 添加联系人
*
* @throws Exception
*/
public void addContact() {
String uriString = "content://com.android.contacts/raw_contacts";
Uri uri = Uri.parse(uriString);
ContentResolver resolver = getApplicationContext().getContentResolver();
ArrayList<ContentProviderOperation> operations = new ArrayList<ContentProviderOperation>();
ContentProviderOperation operation1 = ContentProviderOperation
.newInsert(uri).withValue("account_name", null).build();
operations.add(operation1);
// 添加姓名
uri = Uri.parse("content://com.android.contacts/data");
ContentProviderOperation operation2 = ContentProviderOperation
.newInsert(uri).withValueBackReference("raw_contact_id", 0)
.withValue("mimetype", "vnd.android.cursor.item/name")
.withValue("data2", "SB").build();
operations.add(operation2);
// 添加电话
uri = Uri.parse("content://com.android.contacts/data");
ContentProviderOperation operation3 = ContentProviderOperation
.newInsert(uri).withValueBackReference("raw_contact_id", 0)
.withValue("mimetype", "vnd.android.cursor.item/phone_v2")
.withValue("data2", "2").withValue("data1", "18810466333")
.build();
operations.add(operation3);
try {
resolver.applyBatch("com.android.contacts", operations);
} catch (RemoteException e) {
e.printStackTrace();
} catch (OperationApplicationException e) {
e.printStackTrace();
} finally {
}
}
</span>
代码下载:http://download.csdn.net/detail/leokelly001/8128721