您的位置:首页 > 移动开发 > Android开发

android 使用内容提供者获取手机联系人

2017-05-09 11:03 405 查看
直接上代码:

清单文件中的权限:

//读联系人的权限
<uses-permission android:name="android.permission.READ_CONTACTS" />
//写联系人的权限
<uses-permission android:name="android.permission.WRITE_CONTACTS" />


获取联系人代码:

private void initHuoQU() {
//得到内存分析者
ContentResolver contentResolver = getContentResolver();
//用查询的方法里面几个参数一定不要写错
//先查询RawContacts.CONTENT_URI表拿到联系人id
Cursor query = contentResolver.query(RawContacts.CONTENT_URI,new String[]{RawContacts._ID}, null, null, null);
//然后拿着联系人id去data表查询属于该联系人的信息
while (query.moveToNext()){
long id = query.getLong(0);
HashMap<String, String> item = new HashMap();
Cursor cursor2 = contentResolver.query(Data.CONTENT_URI,
new String[]{Data.DATA1, Data.MIMETYPE},
Data.RAW_CONTACT_ID + "=?",
new String[]{id + ""},
null);
//得到data字段的值,就是联系人的信息,通过type判断是什么类型的信息
while (cursor2.moveToNext()){
String type = cursor2.getString(1);
String data = cursor2.getString(0);
//联系人姓名
if (CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE.equals(type)){
item.put("name", data);
}
//联系人电话
else if (CommonDataKinds.Phone.CONTENT_ITEM_TYPE.equals(type)){
item.put("phone", data);
}

}

list.add(item);
}
lv.setAdapter(new MyAdapter());
}


具体代码:

public class MainActivity extends ActionBarActivity{
ArrayList<HashMap<String, String>> list=new ArrayList<HashMap<String,String>>();
private ListView lv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = (ListView) findViewById(R.id.lv);
initHuoQU();
}
public 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) {
// TODO Auto-generated method stub
ViewHander vh=null;
if (convertView==null) {
convertView=View.inflate(MainActivity.this, R.layout.aaa, null);

af3a
vh=new ViewHander();
vh.tv=(TextView) convertView.findViewById(R.id.tv);
vh.tv2=(TextView) convertView.findViewById(R.id.tv2);
convertView.setTag(vh);
}else {
vh=(ViewHander) convertView.getTag();
}
vh.tv.setText(list.get(position).get("name"));
vh.tv2.setText(list.get(position).get("phone"));
return convertView;
}
class ViewHander{
TextView tv,tv2;
}
}
private void initHuoQU() { //得到内存分析者 ContentResolver contentResolver = getContentResolver(); //用查询的方法里面几个参数一定不要写错 //先查询RawContacts.CONTENT_URI表拿到联系人id Cursor query = contentResolver.query(RawContacts.CONTENT_URI,new String[]{RawContacts._ID}, null, null, null); //然后拿着联系人id去data表查询属于该联系人的信息 while (query.moveToNext()){ long id = query.getLong(0); HashMap<String, String> item = new HashMap(); Cursor cursor2 = contentResolver.query(Data.CONTENT_URI, new String[]{Data.DATA1, Data.MIMETYPE}, Data.RAW_CONTACT_ID + "=?", new String[]{id + ""}, null); //得到data字段的值,就是联系人的信息,通过type判断是什么类型的信息 while (cursor2.moveToNext()){ String type = cursor2.getString(1); String data = cursor2.getString(0); //联系人姓名 if (CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE.equals(type)){ item.put("name", data); } //联系人电话 else if (CommonDataKinds.Phone.CONTENT_ITEM_TYPE.equals(type)){ item.put("phone", data); } } list.add(item); } lv.setAdapter(new MyAdapter()); }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: