本文共 1769 字,大约阅读时间需要 5 分钟。
//读取联系人private ListView lvList;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);lvList = (ListView) findViewById(R.id.lv_list);ArrayList> readContact = readContact();// System.out.println(readContact);lvList.setAdapter(new SimpleAdapter(this, readContact,R.layout.contact_list_item, new String[] { "name", "phone" },new int[] { R.id.tv_name, R.id.tv_phone }));}private ArrayList > readContact() {// 首先,从raw_contacts中读取联系人的id("contact_id")// 其次,根据contact_id从data表中查询出相应的电话号码和联系人名称// 然后,根据mimetype来区分哪个是联系人,哪个是电话号码Uri rawContactUri = Uri.parse("content://com.android.contacts/raw_contacts");Uri dataUri = Uri.parse("content://com.android.contacts/data");ArrayList > list = new ArrayList >();// 从raw_contacts中读取联系人的id("contact_id")Cursor rawContactsCursor = getContentResolver().query(rawContactUri,new String[] { "contact_id" }, null, null, null);if (rawContactsCursor != null) {while (rawContactsCursor.moveToNext()) {String contactId = rawContactsCursor.getString(0);// 根据contact_id从data表中查询出相应的电话号码和联系人名称,实际上查询的是视图view_dataCursor dataCursor = getContentResolver().query(dataUri,new String[] { "data1", "mimetype" }, "contact_id=?",new String[] { contactId }, null);if (dataCursor != null) {HashMap map = new HashMap ();while (dataCursor.moveToNext()) {String data1 = dataCursor.getString(0);String mimetype = dataCursor.getString(1);System.out.println(contactId + ";" + data1 + ";"+ mimetype);if ("vnd.android.cursor.item/phone_v2".equals(mimetype)) {map.put("phone", data1);} else if ("vnd.android.cursor.item/name".equals(mimetype)) {map.put("name", data1);}}list.add(map);dataCursor.close();}}rawContactsCursor.close();}return list;}
转载地址:http://qphpf.baihongyu.com/