利用ContentProvider查询手机联系人

//首先为联系人创建一个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;
}

}


}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晓 5

有啥不懂的可以单聊解答....

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值