直接上代码:
清单文件中的权限:
//读联系人的权限
<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);
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());
}
}