//首先为联系人创建一个Bean类
package com.bawei.bean;
public class Person {
private String name;
private String phone;
private String sms;
public Person(String name, String phone, String sms) {
super();
this.name = name;
this.phone = phone;
this.sms = sms;
}
public Person() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getSms() {
return sms;
}
public void setSms(String sms) {
this.sms = sms;
}
}
//利用ContentResolver来查询联系人
package com.bawei.contentresoler;
import java.util.ArrayList;
import java.util.List;
import com.bawei.bean.Person;
import android.content.ContentResolver;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
public class MyContentResolver {
private ContentResolver cr;
//查询手机内容的联系人的方法
public List<Person> getUser(Context context){
//拿到内容解析者
cr = context.getContentResolver();
//content://主机名/暗号
Uri raw_contacts_uri=Uri.parse("content://com.android.contacts/raw_contacts");
Uri uri_data=Uri.parse("content://com.android.contacts/data");
//首先查询 raw_contacts 的_id
/**
* uri 主机名
* projection 要查询的列名
* selection 条件判断
* selectionArgs 条件判断的值
* sortOrde 是否排序
*/
//查的是raw_contacts表
Cursor cursor=cr.query(raw_contacts_uri,new String[]{"_id"}, null, null, null);
List<Person> list=new ArrayList<Person>();
while(cursor.moveToNext()){
Person person=new Person();
int raw_contact_id=cursor.getInt(cursor.getColumnIndexOrThrow("_id"));
//然后查询 data 表中的 mimetype_id 与 data1 数据
Cursor cursor_data=cr.query(uri_data,new String[]{"mimetype","data1"},"raw_contact_id=?",new String[]{raw_contact_id+""} , null);
while(cursor_data.moveToNext()){
//获取 mimetype_id 与 data1 俩个数据
String mimetype=cursor_data.getString(cursor_data.getColumnIndexOrThrow("mimetype"));
String data1=cursor_data.getString(cursor_data.getColumnIndexOrThrow("data1"));
if("vnd.android.cursor.item/name".equals(mimetype)){
person.setName(data1);
}
else if("vnd.android.cursor.item/phone_v2".equals(mimetype)){
person.setPhone(data1);
}
else if("vnd.android.cursor.item/email_v2".equals(mimetype)){
person.setSms(data1);
}
}
list.add(person);
}
return list;
}
}
//在Activity中的操作
package com.bawei.lianxi;
import java.util.List;
import com.bawei.bean.Person;
import com.bawei.contentresoler.MyContentResolver;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
public class MainActivity extends Activity {
private ListView lv;
private List<Person> list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取控件
lv = (ListView) findViewById(R.id.lv);
}
//按钮监听
public void query(View view){
list=new MyContentResolver().getUser(this);
lv.setAdapter(new MyAdapter());
}
//自定义设配器
class MyAdapter extends BaseAdapter{
@Override
public int getCount() {
// TODO Auto-generated method stub
return list.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
convertView =View.inflate(MainActivity.this, R.layout.lv_lv, null);
ImageView iv=(ImageView) convertView.findViewById(R.id.iv);
TextView tv1=(TextView) convertView.findViewById(R.id.tv1);
TextView tv2=(TextView) convertView.findViewById(R.id.tv2);
TextView tv3=(TextView) convertView.findViewById(R.id.tv3);
iv.setImageResource(R.drawable.ic_launcher);
tv1.setText("姓名:"+list.get(position).getName());
tv2.setText("电话:"+list.get(position).getPhone());
tv3.setText("邮箱:"+list.get(position).getSms());
return convertView;
}
}
}