public class AddressBookFragment extends Fragment { private ListView my_address_book_listview; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { Fresco.initialize(getContext()); View view = inflater.inflate(R.layout.address_booklayout, container, false); initView(view); // ArrayList<HashMap<String, String>> readContact = readContact(); // System.out.println(readContact); ArrayList<String> readContact = getReadContact(); my_address_book_listview.setAdapter(new ArrayAdapter<String>(getContext(),android.R.layout.simple_expandable_list_item_1,readContact)); return view; } Uri uri= ContactsContract.CommonDataKinds.Phone.CONTENT_URI; private ArrayList<String> getReadContact() { ContentResolver resolver = getContext().getContentResolver(); Cursor query = resolver.query(uri, null, null, null, null); ArrayList<String> arr = new ArrayList<String>(); while(query.moveToNext()){ String name = query.getString(query.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); String num = query.getString(query.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); arr.add(name+","+num); } return arr; } private void initView(View view) { my_address_book_listview = (ListView) view.findViewById(R.id.my_address_book_listview); } /** *得到联系人 **/ private ArrayList<HashMap<String, String>> readContact() { // 首先,从raw_contacts中读取联系人的id("contact_id") // 其次, 根据contact_id从data表中查询出相应的电话号码和联系人名称 // 然后,根据mimetype来区分哪个是联系人,哪个是电话号码 Uri rawContactsUri = Uri.parse("content://com.android.contacts/raw_contacts"); Uri dataUri = Uri.parse("content://com.android.contacts/data"); ArrayList<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>(); // 从raw_contacts中读取所有联系人的id("contact_id") Cursor rawContactsCursor = getContext().getContentResolver().query(rawContactsUri, new String[] { "contact_id" }, null, null, null); if (rawContactsCursor != null) { while (rawContactsCursor.moveToNext()) { String contactId = rawContactsCursor.getString(0); // System.out.println("得到的contact_id="+contactId); // 根据contact_id从data表中查询出相应的电话号码和联系人名称, 实际上查询的是视图view_data Cursor dataCursor = getContext().getContentResolver().query(dataUri, new String[] { "data1", "mimetype" }, "contact_id=?", new String[] { contactId }, null); if (dataCursor != null) { HashMap<String, String> map = new HashMap<String, String>(); 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; } }
获取手机联系人
最新推荐文章于 2024-11-16 16:32:25 发布