http://blog.163.com/llllamso_0819@126/blog/static/64744319201011165422701/
package com.peoplenew;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import android.content.ContentResolver;
import android.content.ContentUris;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.provider.ContactsContract;
import android.provider.ContactsContract.Data;
import android.provider.ContactsContract.CommonDataKinds.Im;
import android.provider.ContactsContract.CommonDataKinds.Nickname;
import android.provider.ContactsContract.CommonDataKinds.Note;
import android.provider.ContactsContract.CommonDataKinds.Organization;
import android.util.Log;
import android.widget.ListView;
import android.widget.TextView;
public class ContactActivity extends Activity {
private List<ContactPeople> peoples = null;
private ListView listview;
private StringBuffer strbuf = new StringBuffer();
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
listview = (ListView) findViewById(R.id.listview);
peoples = getContact();
listview.setAdapter(new MyAdapter(this, peoples));
}
public List<ContactPeople> getContact() {
// 将所有联系人放入list
List<ContactPeople> peoples = new ArrayList<ContactPeople>();
// 获得所有的联系人
Cursor cur = getContentResolver().query(
ContactsContract.Contacts.CONTENT_URI,
null,
null,
null,
ContactsContract.Contacts.DISPLAY_NAME
+ " COLLATE LOCALIZED ASC");
// 循环遍历
if (cur.moveToFirst()) {
int idColumn = cur.getColumnIndex(ContactsContract.Contacts._ID);
int displayNameColumn = cur
.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
do {
// 联系人Bean 每读出一个联系人,就将其放入Bean中
ContactPeople cp = new ContactPeople();
// 获得联系人的ID号
String contactId = cur.getString(idColumn);
// 获得联系人姓名
String disPlayName = cur.getString(displayNameColumn);
// 查看该联系人有多少个电话号码。如果没有这返回值为0
int phoneCount = cur
.getInt(cur
.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
Log.i("username", disPlayName);
cp.setContactName(disPlayName);
if (phoneCount > 0) {
// 获得联系人的电话号码
Cursor phones = getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID
+ " = " + contactId, null, null);
if (phones.moveToFirst()) {
do {
// 遍历所有的电话号码
String phoneNumber = phones
.getString(phones
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
String phoneType = phones
.getString(phones
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE));
Log.i("phoneNumber", phoneNumber);
Log.i("phoneType", phoneType);
if (phoneType.equals("1")) {
cp.setContactHomePhone(phoneNumber);
} else {
cp.setContactPhone(phoneNumber);
}
} while (phones.moveToNext());
}
}
// 获取该联系人邮箱
Cursor emails = getContentResolver().query(
ContactsContract.CommonDataKinds.Email.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID
+ " = " + contactId, null, null);
if (emails.moveToFirst()) {
do {
// 遍历所有的Email
String emailValue = emails
.getString(emails
.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
Log.i("emailValue", emailValue);
strbuf.append("Email:" + emailValue + "\n");
cp.setContactEmail(emailValue);
} while (emails.moveToNext());
}
// 获得联系人头像
Cursor image = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null,
"DISPLAY_NAME = '" + disPlayName + "'", null, null);
if(image.moveToFirst()){
do {
// 遍历所有的头像
Uri uri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI,
Long.parseLong(contactId));
InputStream input =ContactsContract.Contacts.openContactPhotoInputStream(this.getContentResolver(), uri);
Bitmap contactPhoto = BitmapFactory.decodeStream(input);
cp.setContactPhoto(contactPhoto);
} while (image.moveToNext());
}
// 获取该联系人地址
Cursor address = getContentResolver()
.query(
ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID
+ " = " + contactId, null, null);
if (address.moveToFirst()) {
do {
// 遍历所有的地址
String street = address
.getString(address
.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.STREET));
String city = address
.getString(address
.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.CITY));
String region = address
.getString(address
.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.REGION));
String postCode = address
.getString(address
.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.POSTCODE));
String formatAddress = address
.getString(address
.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.FORMATTED_ADDRESS));
Log.i("street", street);
Log.i("city", city);
Log.i("region", region);
Log.i("postCode", postCode);
Log.i("formatAddress", formatAddress);
cp.setContactAddress(formatAddress);
} while (address.moveToNext());
}
// 获取该联系人组织
Cursor organizations = getContentResolver().query(
Data.CONTENT_URI,
new String[] { Data._ID, Organization.COMPANY,
Organization.TITLE },
Data.CONTACT_ID + "=?" + " AND " + Data.MIMETYPE + "='"
+ Organization.CONTENT_ITEM_TYPE + "'",
new String[] { contactId }, null);
if (organizations.moveToFirst()) {
do {
String company = organizations.getString(organizations
.getColumnIndex(Organization.COMPANY));
String post = organizations.getString(organizations
.getColumnIndex(Organization.TITLE));
Log.i("company", company);
Log.i("title", post);
cp.setContactOrganizCompany(company);
cp.setContactOrganizPost(post);
} while (organizations.moveToNext());
}
// 获取备注信息
Cursor notes = getContentResolver().query(
Data.CONTENT_URI,
new String[] { Data._ID, Note.NOTE },
Data.CONTACT_ID + "=?" + " AND " + Data.MIMETYPE + "='"
+ Note.CONTENT_ITEM_TYPE + "'",
new String[] { contactId }, null);
if (notes.moveToFirst()) {
do {
String noteinfo = notes.getString(notes
.getColumnIndex(Note.NOTE));
Log.i("noteinfo", noteinfo);
cp.setContactRemark(noteinfo);
} while (notes.moveToNext());
}
// 获取nickname信息
Cursor nicknames = getContentResolver().query(
Data.CONTENT_URI,
new String[] { Data._ID, Nickname.NAME },
Data.CONTACT_ID + "=?" + " AND " + Data.MIMETYPE + "='"
+ Nickname.CONTENT_ITEM_TYPE + "'",
new String[] { contactId }, null);
if (nicknames.moveToFirst()) {
do {
String nickname_ = nicknames.getString(nicknames
.getColumnIndex(Nickname.NAME));
Log.i("nickname_", nickname_);
cp.setContactNickname(nickname_);
} while (nicknames.moveToNext());
}
peoples.add(cp);
} while (cur.moveToNext());
}
return peoples;
}
}
package com.peoplenew;
import java.util.List;
import android.content.Context;
import android.graphics.Bitmap;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public class MyAdapter extends BaseAdapter {
private List<ContactPeople> peoples=null;
private LayoutInflater linearlayout;
public MyAdapter(Context con,List<ContactPeople> listpeople){
linearlayout=LayoutInflater.from(con);
peoples=listpeople;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return peoples.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return peoples.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ListItems listitems;
if(convertView==null){
listitems=new ListItems();
convertView=linearlayout.inflate(R.layout.listitems, null);
listitems.name=(TextView)convertView.findViewById(R.id.name);
listitems.phone=(TextView)convertView.findViewById(R.id.phone);
listitems.homephone=(TextView)convertView.findViewById(R.id.homephone);
listitems.email=(TextView)convertView.findViewById(R.id.email);
listitems.address=(TextView)convertView.findViewById(R.id.address);
listitems.company=(TextView)convertView.findViewById(R.id.company);
listitems.post=(TextView)convertView.findViewById(R.id.post);
listitems.remark=(TextView)convertView.findViewById(R.id.remark);
listitems.nickname=(TextView)convertView.findViewById(R.id.nickname);
listitems.photo=(ImageView)convertView.findViewById(R.id.photo);
convertView.setTag(listitems);
}else{
listitems=(ListItems)convertView.getTag();
}
ContactPeople people=peoples.get(position);
listitems.name.setText("姓名:"+people.getContactName());
listitems.phone.setText("手机:"+people.getContactPhone());
listitems.homephone.setText("宅电:"+people.getContactHomePhone());
listitems.email.setText("邮箱:"+people.getContactEmail());
listitems.address.setText("地址:"+people.getContactAddress());
listitems.company.setText("公司:"+people.getContactOrganizCompany());
listitems.post.setText("职位:"+people.getContactOrganizPost());
listitems.remark.setText("备注:"+people.getContactRemark());
listitems.nickname.setText("昵称:"+people.getContactNickname());
listitems.photo.setImageBitmap(people.getContactPhoto());
return convertView;
}
class ListItems{
private TextView name;
private TextView phone;
private TextView homephone;
private TextView email;
private TextView address;
private TextView company;
private TextView post;
private TextView remark;
private TextView nickname;
private ImageView photo;
}
}
package com.peoplenew;
import java.util.List;
import android.content.Context;
import android.graphics.Bitmap;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public class MyAdapter extends BaseAdapter {
private List<ContactPeople> peoples=null;
private LayoutInflater linearlayout;
public MyAdapter(Context con,List<ContactPeople> listpeople){
linearlayout=LayoutInflater.from(con);
peoples=listpeople;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return peoples.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return peoples.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ListItems listitems;
if(convertView==null){
listitems=new ListItems();
convertView=linearlayout.inflate(R.layout.listitems, null);
listitems.name=(TextView)convertView.findViewById(R.id.name);
listitems.phone=(TextView)convertView.findViewById(R.id.phone);
listitems.homephone=(TextView)convertView.findViewById(R.id.homephone);
listitems.email=(TextView)convertView.findViewById(R.id.email);
listitems.address=(TextView)convertView.findViewById(R.id.address);
listitems.company=(TextView)convertView.findViewById(R.id.company);
listitems.post=(TextView)convertView.findViewById(R.id.post);
listitems.remark=(TextView)convertView.findViewById(R.id.remark);
listitems.nickname=(TextView)convertView.findViewById(R.id.nickname);
listitems.photo=(ImageView)convertView.findViewById(R.id.photo);
convertView.setTag(listitems);
}else{
listitems=(ListItems)convertView.getTag();
}
ContactPeople people=peoples.get(position);
listitems.name.setText("姓名:"+people.getContactName());
listitems.phone.setText("手机:"+people.getContactPhone());
listitems.homephone.setText("宅电:"+people.getContactHomePhone());
listitems.email.setText("邮箱:"+people.getContactEmail());
listitems.address.setText("地址:"+people.getContactAddress());
listitems.company.setText("公司:"+people.getContactOrganizCompany());
listitems.post.setText("职位:"+people.getContactOrganizPost());
listitems.remark.setText("备注:"+people.getContactRemark());
listitems.nickname.setText("昵称:"+people.getContactNickname());
listitems.photo.setImageBitmap(people.getContactPhoto());
return convertView;
}
class ListItems{
private TextView name;
private TextView phone;
private TextView homephone;
private TextView email;
private TextView address;
private TextView company;
private TextView post;
private TextView remark;
private TextView nickname;
private ImageView photo;
}
}