在做项目的时候,因为要用到我们自动获取联系人的姓名和电话,就想到了ContentProvider分享数据的功能,这样做既节省了时间,也减少了我们输入错误号码的几率,所以,想在这里把小demo分享给大家,方便以后要用的时候可以看看

我们先看下获取所有联系人的方式,把所有联系人展示在listView上
public void getLinkMan(View view){
//获取联系人
Uri uri=Uri.parse("content://com.android.contacts/raw_contacts");
cursor = cr.query(uri,null,null,null,null);
while(cursor.moveToNext()){
int id= cursor.getInt(cursor.getColumnIndex("_id"));
String name= cursor.getString(cursor.getColumnIndex("display_name"));
int number=cursor.getInt(cursor.getColumnIndex("number"));
Log.i("test",id+" "+name);
//继续获取相对应的联系人的数据(电话号码)
Uri uriData=Uri.parse("content://com.android.contacts/raw_contacts/"+id+"/data");
cursorData = cr.query(uriData,null,null,null,null);
while(cursorData.moveToNext()){
String data1= cursorData.getString(cursorData.getColumnIndex("data1"));
String type= cursorData.getString(cursorData.getColumnIndex("mimetype"));
if("vnd.android.cursor.item/phone_v2".equals(type)){
Log.i("test"," "+data1+":"+type);
Map map=new HashMap<>();
map.put("id",id);
map.put("name",name);
map.put("number",number);
list.add(map);
}
}
}
//实例化适配器
simpleAdapter = new SimpleAdapter(this,list, R.layout.item_linkman,new String[]{"_id","name","number"},new int[]{R.id.tv_item_list_id,R.id.tv_item_list_name,R.id.tv_item_list_number});
listView.setAdapter(simpleAdapter);
}