各位谁知道遍历一次数据库即可将联系人姓名跟号码一起查询出来 http://blog.csdn.net/dinjay/archive/2010/08/03/5784226.aspx参考 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我是想将号码跟姓名能在一个cursor里面得到 看看这个:http://stackoverflow.com/questions/2356084/read-all-contacts-phone-numbers-in-androidUri personUri = ContentUris.withAppendedId(People.CONTENT_URI, personId); Uri phonesUri = Uri.withAppendedPath(personUri, People.Phones.CONTENT_DIRECTORY); String[] proj = new String[] {Phones._ID, Phones.TYPE, Phones.NUMBER, Phones.LABEL} Cursor cursor = contentResolver.query(phonesUri, proj, null, null, null);希望能帮助你。 我都是直接在Data里查:[code=Java] private static final String[] projection = { ContactsContract.Data.CONTACT_ID, ContactsContract.Data.RAW_CONTACT_ID, ContactsContract.RawContacts.VERSION, ContactsContract.Data.DISPLAY_NAME, ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.NUMBER, ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.IS_PRIMARY, ContactsContract.CommonDataKinds.Phone.DATA3}; private static final String orderBy = ContactsContract.Data.CONTACT_ID; public static void getContacts(ContentResolver contentResolver){ Cursor cursor = contentResolver.query( ContactsContract.Data.CONTENT_URI, projection, null, null, orderBy); try{ String contactIdCurrent = null; String contactId = null;// int version; String name; ContactPeople contactPeople = null; boolean retrievePhone = false; while(cursor.moveToNext()){ contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Data.CONTACT_ID)); if(!contactId.equals(contactIdCurrent)){ contactIdCurrent = contactId; retrievePhone = false; contactPeople = contactCache.get(contactId);// version = cursor.getInt(cursor.getColumnIndex(ContactsContract.RawContacts.VERSION));// if(contactPeople == null || contactPeople.getVersion() < version){ if(contactPeople == null){ contactPeople = new ContactPeople(contactId);// contactPeople = new ContactPeople(contactId, version); contactPeople.setRawContactId(cursor.getString(cursor.getColumnIndex(ContactsContract.Data.RAW_CONTACT_ID))); }// contactPeople.setVersion(version); name = cursor.getString(cursor.getColumnIndex(ContactsContract.Data.DISPLAY_NAME)); if(!name.equals(contactPeople.getName())){ contactPeople.setName(name); if(!firstLoad){ String[] spells = CnSpell.cnToSpellComparable(contactPeople.getName()); contactPeople.setFullSpell(spells[0]); contactPeople.setCompareString(spells[1]); } } contactPeople.clearPhones(); contactPeople.clearGroups(); retrievePhone = true; setPhoneAndGroup(contactPeople, cursor);// }// else{// for(int i=0; i<contactPeople.getGroups().size(); i++){// ContactGroup newGroup = groupCache.get(contactPeople.getGroups().get(i).getId());// contactPeople.getGroups().remove(i--);// if(newGroup != null){// contactPeople.getGroups().add(++i, newGroup);// newGroup.addContactPeople(contactPeople);// }// }// } contactTemp.put(contactId, contactPeople); }else if(retrievePhone){ setPhoneAndGroup(contactPeople, cursor); } } }finally{ cursor.close(); } contactCache.clear(); contactCache.putAll(contactTemp); contactTemp.clear(); } private static void setPhoneAndGroup(ContactPeople contactPeople, Cursor cursor) { String mimetype = cursor.getString(cursor.getColumnIndex(ContactsContract.Data.MIMETYPE)); if(ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE.equals(mimetype)){ String number = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); int type = cursor.getInt(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE)); int primary = cursor.getInt(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.IS_PRIMARY)); String custom; //自定义类型 if(type == ContactsContract.CommonDataKinds.Phone.TYPE_CUSTOM){ custom = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DATA3)); }else{ custom = ""; } contactPeople.addPhone(new ContactPeople.Phone(number, type, primary, custom)); }else if(ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE.equals(mimetype)){ } }code] 凭什么不能编辑呢,重发一遍: private static final String[] projection = { ContactsContract.Data.CONTACT_ID, ContactsContract.Data.RAW_CONTACT_ID, ContactsContract.RawContacts.VERSION, ContactsContract.Data.DISPLAY_NAME, ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.NUMBER, ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.IS_PRIMARY, ContactsContract.CommonDataKinds.Phone.DATA3}; private static final String orderBy = ContactsContract.Data.CONTACT_ID; public static void getContacts(ContentResolver contentResolver){ Cursor cursor = contentResolver.query( ContactsContract.Data.CONTENT_URI, projection, null, null, orderBy); try{ String contactIdCurrent = null; String contactId = null;// int version; String name; ContactPeople contactPeople = null; boolean retrievePhone = false; while(cursor.moveToNext()){ contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Data.CONTACT_ID)); if(!contactId.equals(contactIdCurrent)){ contactIdCurrent = contactId; retrievePhone = false; contactPeople = contactCache.get(contactId);// version = cursor.getInt(cursor.getColumnIndex(ContactsContract.RawContacts.VERSION));// if(contactPeople == null || contactPeople.getVersion() < version){ if(contactPeople == null){ contactPeople = new ContactPeople(contactId);// contactPeople = new ContactPeople(contactId, version); contactPeople.setRawContactId(cursor.getString(cursor.getColumnIndex(ContactsContract.Data.RAW_CONTACT_ID))); }// contactPeople.setVersion(version); name = cursor.getString(cursor.getColumnIndex(ContactsContract.Data.DISPLAY_NAME)); if(!name.equals(contactPeople.getName())){ contactPeople.setName(name); if(!firstLoad){ String[] spells = CnSpell.cnToSpellComparable(contactPeople.getName()); contactPeople.setFullSpell(spells[0]); contactPeople.setCompareString(spells[1]); } } contactPeople.clearPhones(); contactPeople.clearGroups(); retrievePhone = true; setPhoneAndGroup(contactPeople, cursor);// }// else{// for(int i=0; i<contactPeople.getGroups().size(); i++){// ContactGroup newGroup = groupCache.get(contactPeople.getGroups().get(i).getId());// contactPeople.getGroups().remove(i--);// if(newGroup != null){// contactPeople.getGroups().add(++i, newGroup);// newGroup.addContactPeople(contactPeople);// }// }// } contactTemp.put(contactId, contactPeople); }else if(retrievePhone){ setPhoneAndGroup(contactPeople, cursor); } } }finally{ cursor.close(); } contactCache.clear(); contactCache.putAll(contactTemp); contactTemp.clear(); } private static void setPhoneAndGroup(ContactPeople contactPeople, Cursor cursor) { String mimetype = cursor.getString(cursor.getColumnIndex(ContactsContract.Data.MIMETYPE)); if(ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE.equals(mimetype)){ String number = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); int type = cursor.getInt(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE)); int primary = cursor.getInt(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.IS_PRIMARY)); String custom; //自定义类型 if(type == ContactsContract.CommonDataKinds.Phone.TYPE_CUSTOM){ custom = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DATA3)); }else{ custom = ""; } contactPeople.addPhone(new ContactPeople.Phone(number, type, primary, custom)); }else if(ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE.equals(mimetype)){ } } 用Eclipse编写安卓程序,模拟器能够打开,但是不运行我编写的程序,在程序列表中也找不到 100分 怎样禁止Activity重新onCreate android 照相怎么设置亮度,色调,和焦距呢 有些软件关闭了过会又自动运行了,怎么实现的啊? 关于socket,同一个wifi,为什么电脑局域网能通信,手机就不能?? 关于ViewPager实现多页面,子布局内事件处理的问题 android开发之 银行卡号图像识别 怎么用代ma开启强制GPU渲染? android 右边半圆可以滑动的菜单 请问这个错误怎么解决,abdroid studio打不开了 声控 各位请进,求教Android项目资源问题
看看这个:
http://stackoverflow.com/questions/2356084/read-all-contacts-phone-numbers-in-androidUri personUri = ContentUris.withAppendedId(People.CONTENT_URI, personId);
Uri phonesUri = Uri.withAppendedPath(personUri, People.Phones.CONTENT_DIRECTORY); String[] proj = new String[] {Phones._ID, Phones.TYPE, Phones.NUMBER, Phones.LABEL} Cursor cursor = contentResolver.query(phonesUri, proj, null, null, null);希望能帮助你。
[code=Java] private static final String[] projection = {
ContactsContract.Data.CONTACT_ID,
ContactsContract.Data.RAW_CONTACT_ID,
ContactsContract.RawContacts.VERSION,
ContactsContract.Data.DISPLAY_NAME,
ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.Phone.NUMBER,
ContactsContract.CommonDataKinds.Phone.TYPE,
ContactsContract.CommonDataKinds.Phone.IS_PRIMARY,
ContactsContract.CommonDataKinds.Phone.DATA3};
private static final String orderBy = ContactsContract.Data.CONTACT_ID;
public static void getContacts(ContentResolver contentResolver){
Cursor cursor = contentResolver.query(
ContactsContract.Data.CONTENT_URI,
projection, null, null, orderBy);
try{
String contactIdCurrent = null;
String contactId = null;
// int version;
String name;
ContactPeople contactPeople = null;
boolean retrievePhone = false;
while(cursor.moveToNext()){
contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Data.CONTACT_ID));
if(!contactId.equals(contactIdCurrent)){
contactIdCurrent = contactId;
retrievePhone = false;
contactPeople = contactCache.get(contactId);
// version = cursor.getInt(cursor.getColumnIndex(ContactsContract.RawContacts.VERSION));
// if(contactPeople == null || contactPeople.getVersion() < version){
if(contactPeople == null){
contactPeople = new ContactPeople(contactId);
// contactPeople = new ContactPeople(contactId, version);
contactPeople.setRawContactId(cursor.getString(cursor.getColumnIndex(ContactsContract.Data.RAW_CONTACT_ID)));
}
// contactPeople.setVersion(version);
name = cursor.getString(cursor.getColumnIndex(ContactsContract.Data.DISPLAY_NAME));
if(!name.equals(contactPeople.getName())){
contactPeople.setName(name);
if(!firstLoad){
String[] spells = CnSpell.cnToSpellComparable(contactPeople.getName());
contactPeople.setFullSpell(spells[0]);
contactPeople.setCompareString(spells[1]);
}
}
contactPeople.clearPhones();
contactPeople.clearGroups();
retrievePhone = true;
setPhoneAndGroup(contactPeople, cursor);
// }
// else{
// for(int i=0; i<contactPeople.getGroups().size(); i++){
// ContactGroup newGroup = groupCache.get(contactPeople.getGroups().get(i).getId());
// contactPeople.getGroups().remove(i--);
// if(newGroup != null){
// contactPeople.getGroups().add(++i, newGroup);
// newGroup.addContactPeople(contactPeople);
// }
// }
// }
contactTemp.put(contactId, contactPeople);
}else if(retrievePhone){
setPhoneAndGroup(contactPeople, cursor);
}
}
}finally{
cursor.close();
}
contactCache.clear();
contactCache.putAll(contactTemp);
contactTemp.clear();
}
private static void setPhoneAndGroup(ContactPeople contactPeople, Cursor cursor) {
String mimetype = cursor.getString(cursor.getColumnIndex(ContactsContract.Data.MIMETYPE));
if(ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE.equals(mimetype)){
String number = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
int type = cursor.getInt(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE));
int primary = cursor.getInt(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.IS_PRIMARY));
String custom; //自定义类型
if(type == ContactsContract.CommonDataKinds.Phone.TYPE_CUSTOM){
custom = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DATA3));
}else{
custom = "";
}
contactPeople.addPhone(new ContactPeople.Phone(number, type, primary, custom));
}else if(ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE.equals(mimetype)){ }
}code]
private static final String[] projection = {
ContactsContract.Data.CONTACT_ID,
ContactsContract.Data.RAW_CONTACT_ID,
ContactsContract.RawContacts.VERSION,
ContactsContract.Data.DISPLAY_NAME,
ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.Phone.NUMBER,
ContactsContract.CommonDataKinds.Phone.TYPE,
ContactsContract.CommonDataKinds.Phone.IS_PRIMARY,
ContactsContract.CommonDataKinds.Phone.DATA3};
private static final String orderBy = ContactsContract.Data.CONTACT_ID;
public static void getContacts(ContentResolver contentResolver){
Cursor cursor = contentResolver.query(
ContactsContract.Data.CONTENT_URI,
projection, null, null, orderBy);
try{
String contactIdCurrent = null;
String contactId = null;
// int version;
String name;
ContactPeople contactPeople = null;
boolean retrievePhone = false;
while(cursor.moveToNext()){
contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Data.CONTACT_ID));
if(!contactId.equals(contactIdCurrent)){
contactIdCurrent = contactId;
retrievePhone = false;
contactPeople = contactCache.get(contactId);
// version = cursor.getInt(cursor.getColumnIndex(ContactsContract.RawContacts.VERSION));
// if(contactPeople == null || contactPeople.getVersion() < version){
if(contactPeople == null){
contactPeople = new ContactPeople(contactId);
// contactPeople = new ContactPeople(contactId, version);
contactPeople.setRawContactId(cursor.getString(cursor.getColumnIndex(ContactsContract.Data.RAW_CONTACT_ID)));
}
// contactPeople.setVersion(version);
name = cursor.getString(cursor.getColumnIndex(ContactsContract.Data.DISPLAY_NAME));
if(!name.equals(contactPeople.getName())){
contactPeople.setName(name);
if(!firstLoad){
String[] spells = CnSpell.cnToSpellComparable(contactPeople.getName());
contactPeople.setFullSpell(spells[0]);
contactPeople.setCompareString(spells[1]);
}
}
contactPeople.clearPhones();
contactPeople.clearGroups();
retrievePhone = true;
setPhoneAndGroup(contactPeople, cursor);
// }
// else{
// for(int i=0; i<contactPeople.getGroups().size(); i++){
// ContactGroup newGroup = groupCache.get(contactPeople.getGroups().get(i).getId());
// contactPeople.getGroups().remove(i--);
// if(newGroup != null){
// contactPeople.getGroups().add(++i, newGroup);
// newGroup.addContactPeople(contactPeople);
// }
// }
// }
contactTemp.put(contactId, contactPeople);
}else if(retrievePhone){
setPhoneAndGroup(contactPeople, cursor);
}
}
}finally{
cursor.close();
}
contactCache.clear();
contactCache.putAll(contactTemp);
contactTemp.clear();
}
private static void setPhoneAndGroup(ContactPeople contactPeople, Cursor cursor) {
String mimetype = cursor.getString(cursor.getColumnIndex(ContactsContract.Data.MIMETYPE));
if(ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE.equals(mimetype)){
String number = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
int type = cursor.getInt(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE));
int primary = cursor.getInt(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.IS_PRIMARY));
String custom; //自定义类型
if(type == ContactsContract.CommonDataKinds.Phone.TYPE_CUSTOM){
custom = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DATA3));
}else{
custom = "";
}
contactPeople.addPhone(new ContactPeople.Phone(number, type, primary, custom));
}else if(ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE.equals(mimetype)){ }
}