很久没有更新博客了。 一直没整明白,Android中的Contacts是如何组织数据的,于是今天折腾了一下Contacts的结构。 留底以备以后参考。 private String testOne() throws Exception { final Cursor people = getContentResolver().query(Contacts.CONTENT_URI, null, null, null, null); StringBuilder sb = new StringBuilder(); while(people.moveToNext()) { long id = people.getLong(people.getColumnIndex(Contacts._ID)); String name = people.getString(people.getColumnIndex(PhoneLookup.DISPLAY_NAME)); if(id==1) { sb.append("---id is "+id+",name is "+name+"/n"); //String IsPhone = people.getString(people.getColumnIndex(Contacts.HAS_PHONE_NUMBER)); //if( (Integer.parseInt(IsPhone) > 0) ){} Cursor c = null; // Cursor c = getContentResolver().query(CommonDataKinds.Phone.CONTENT_URI, // null,CommonDataKinds.Phone.CONTACT_ID+"="+id,null,null); //while(c.moveToNext()){ // long i = c.getLong(c.getColumnIndex(Contacts._ID)); // String num=c.getString(c.getColumnIndex(CommonDataKinds.Phone.NUMBER)); // sb.append("phone=id:"+i+", n:"+num+"/n"); //} //c.close(); c=getContentResolver().query(Data.CONTENT_URI, null, Data.CONTACT_ID+"="+id, null, null); while(c.moveToNext()){ long j=c.getLong(c.getColumnIndex(Contacts._ID)); String typ=c.getString(c.getColumnIndex(Data.MIMETYPE)); String str=""; if(typ.equals(CommonDataKinds.Im.CONTENT_ITEM_TYPE)){ str=c.getString(c.getColumnIndex(CommonDataKinds.Im.PROTOCOL))+","; str+=c.getString(c.getColumnIndex(CommonDataKinds.Im.DATA)); } else if(typ.equals(CommonDataKinds.Email.CONTENT_ITEM_TYPE)){ str=c.getString(c.getColumnIndex(CommonDataKinds.Email.TYPE))+","; str+=c.getString(c.getColumnIndex(CommonDataKinds.Email.DATA)); } else if(typ.equals(CommonDataKinds.Note.CONTENT_ITEM_TYPE)){ str=c.getString(c.getColumnIndex(CommonDataKinds.Email.DATA)); } else if(typ.equals(CommonDataKinds.Phone.CONTENT_ITEM_TYPE)){ str=c.getString(c.getColumnIndex(CommonDataKinds.Phone.TYPE))+","; str+=c.getString(c.getColumnIndex(CommonDataKinds.Phone.DATA)); } else if(typ.equals(CommonDataKinds.Photo.CONTENT_ITEM_TYPE)){ byte[] buf = c.getBlob(c.getColumnIndex(CommonDataKinds.Photo.PHOTO)); str="len is "+buf.length; } else if(typ.equals(CommonDataKinds.Nickname.CONTENT_ITEM_TYPE)){ str=c.getString(c.getColumnIndex(CommonDataKinds.Nickname.TYPE))+","; str+=c.getString(c.getColumnIndex(CommonDataKinds.Nickname.DATA)); } sb.append("data=id"+j+", t:"+typ+"/n, n:"+str+"/n"); } c.close(); } } people.close(); return sb.toString(); }