名字:
Uri: Uri.parse("content://com.android.contacts/data")
DISPLAY_NAME = “data1”; //姓名
GIVEN_NAME = "data2";//名
FAMILY_NAME = "data3";//姓氏
PREFIX = "data4"; //名称前缀
MID_NAME = "data5";//中间名
String SUFIX = "data6"; //名称后缀
String SUFIX_PINYIN="data7"; //名字拼音
MID_PINYIN="data8"; //中间名拼音
String FAMILY_NAME_PINYIN="data9"; //姓氏拼音
电话:
Uri: Uri.parse("content://com.android.contacts/data/phones"
phone: "data1";//号码
Type: "data2";//这个字段是整形值,指示电话类型
类型对应关系如下:
TYPE_CUSTOM = 0;TYPE_HOME = 1;TYPE_MOBILE = 2;TYPE_WORK = 3;TYPE_FAX_WORK = 4;TYPE_FAX_HOME = 5;TYPE_PAGER = 6;TYPE_OTHER = 7;
Email:
Uri:Uri.parse("content://com.android.contacts/data/emails")
Email: "data1";//邮箱地址
Type: "data2";//这个字段是整形值,指示Email类型
类型对应关系如下:
TYPE_CUSTOM = 0;TYPE_HOME = 1;TYPE_WORK = 2;TYPE_OTHER = 3;TYPE_MOBILE = 4;
地址:
Uri:Uri.parse("content://com.android.contacts/data/postals")
STREET="data4";//街道CITY="data8";//城市STATE="data7";//州ZIP_CODE="data9";//邮政编码
Type:"data2";//type的类型如下
TYPE_CUSTOM = 0;TYPE_HOME = 1;TYPE_WORK = 2;TYPE_OTHER = 3;
Uri uri = ContactsContract.RawContacts.CONTENT_URI;// "content://com.android.contacts/contacts"); //访问raw_contacts表
ContentResolver resolver = mContext.getContentResolver();
final String[] projection = new String[] { Data._ID, "sort_key" };
Cursor cursor = resolver.query(uri, projection, null, null, "sort_key COLLATE LOCALIZED asc"); //
ArrayList<YVContactDBBean> ciList = new ArrayList<YVContactDBBean>();
ArrayList<Integer> contactId = new ArrayList<Integer>();
while (cursor.moveToNext()) {
contactId.add(cursor.getInt(0));// 获得id并且在data中寻找数据
Log.e(" getPhoneAllContact", " contactId=" + cursor.getInt(0));
}
ArrayList<Cursor> contactsData = new ArrayList<Cursor>();
for (int id : contactId) {
uri = Uri.parse("content://com.android.contacts/contacts/" + id + "/data"); //
// 如果要获得data表中某个id对应的数据,则URI为content://com.android.contacts/contacts/#/data
Cursor cursor2 = resolver.query(uri, new String[] { Data.DATA1, Data.DATA2, Data.DATA3, Data.DATA4, Data.DATA5, Data.DATA6, Data.DATA7,
Data.DATA8, Data.DATA9, Data.MIMETYPE }, null, null, null); //
// data1存储各个记录的总数据,mimetype存放记录的类型,如电话、email等
String phoneNumber = "";
String name = "";
String firstName = "";
String lastName = "";
int phoneTag = 0;
try {
YVContactDBBean contactInfo = new YVContactDBBean();
while (cursor2.moveToNext()) {
if (cursor2.getString(cursor2.getColumnIndex("mimetype")).equals("vnd.android.cursor.item/name")) { // 如果是名字
name = cursor2.getString(cursor2.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME));
contactInfo.setAcronym(ToPinYin.getFirstPinYin(name));
contactInfo.setName(name);
contactInfo.setPinYin(ToPinYin.getPinYin(contactInfo.getName() + ""));
// Log.e("name ", "name = " + name);// 全名
lastName = cursor2.getString(cursor2.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME));
contactInfo.setLastName(lastName);
// Log.e("name ", "GIVEN_NAME = " + lastName); // last
firstName = cursor2.getString(cursor2.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME));
contactInfo.setFirstName(firstName);
// Log.e("name ", "FAMILY_NAME = " + firstName);// first
} else if (cursor2.getString(cursor2.getColumnIndex("mimetype")).equals("vnd.android.cursor.item/phone_v2")) { // 如果是电话
phoneNumber = CountryCode + cursor2.getString(cursor2.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
// Log.e("phone ", " phoenNunber = " + phoneNumber);
phoneNumber = phoneNumber.replaceAll(" ", "");
phoneNumber = phoneNumber.replaceAll("-", "");
contactInfo.setPhone(phoneNumber);
phoneTag = cursor2.getInt(cursor2.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE));
contactInfo.setTag(phoneTag);
// Log.e("phone ", " phoenType = " + phoneTag);
}
}
if (null != name && !name.equals("") && null != phoneNumber && !phoneNumber.equals("")) {
ciList.add(contactInfo);
Log.e("+=============================", "=============================");
}
cursor2.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}