标签:
主要是用到了跳入手机联系人的intent和获取手机联系人信息的内容提供者,直接上代码
注:此贴是借鉴别人的帖子加了一些自己的东西写出的,原帖地址明日附上:
/ 首先 我们需要跳入手机通讯录 Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); startActivityForResult(intent, 0); // 之后,我们需要重写onActivityResult来解析从联系人返回的数据 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch (requestCode) { case 0: { if (resultCode == Activity.RESULT_OK) { Uri contactData = data.getData(); // 这样就得到了一个装有联系人数据的游标 Cursor c = managedQuery(contactData, null, null, null, null); // 将游标移动到第一个位置,然后我们开始解析游标中的数据,这里我们抽取了一个方法; c.moveToFirst(); // getContactPhone(CUrsor cursor) String phoneNum[] = this.getContactPhone(c); // 最终 就得到了你想得到的东西,装在了phoneNum[] 中,想做什么操作就做什么操作就行了; } break; } } } /** * 参数: Cursor cursor; 指定游标 * 功能: 从指定游标中取出联系人姓名和电话,并且返回 * 返回值: String[] 0位置是联系人姓名 1位置是联系人电话 */ private String[] getContactPhone(Cursor cursor) { int phoneColumn = cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER); int phoneNum = cursor.getInt(phoneColumn); // 最终要返回的String数组 String phoneResult[] = new String[2]; if (phoneNum > 0) { // 获得联系人的ID号 int idColumn = curso0r.getColumnIndex(ContactsContract.Contacts._ID); String contactId = cursor.getString(idColumn); // 获得联系人的电话号码的cursor; Cursor phones = getContentResolver().query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + contactId, null, null); if (phones.moveToFirst()) { // 遍历所有的电话号码 for (; !phones.isAfterLast(); phones.moveToNext()) { int index = phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER); int phone_type = phones.getInt(typeindex); // 得到选定联系人的号码 String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE)); // 得到选定联系人的名字 String phoneName = phones.getString(phones.getColumnIndex(ContactsContract.PhoneLookup.DISPLAY_NAME)); // 这一块switch不清楚能过滤什么,明天回公司试试看, switch (phone_type) { case 2: phoneResult[1] = phoneNumber; phoneResult[0] = phoneName; break; } } // 最后 要关闭Cursor if (!phones.isClosed()) { phones.close(); } } } return phoneResult; }
复制以上代码,就可以做到了..
标签:
原文地址:http://www.cnblogs.com/redwolf/p/5568527.html