Android获取联系人信息[名字,手机,电话,公司名称,昵称]
2017-11-14 10:57
633 查看
Android获取联系人信息[名字,手机,电话,公司名称,昵称]
直接实例化ContactUril类传入Context对象后,调用getContactInfo方法就可以获取,获取的为拼接好的JSON串,数据Demo会在最下面给出。
public class ContactUtil { private List<Contacts> list; private Context context; private JSONObject mailObject; private JSONArray jsonObject; private JSONArray phoneArray; public ContactUtil(Context context) { this.context = context; } // ContactsContract.Contacts.CONTENT_URI= content://com.android.contacts/contacts; // ContactsContract.Data.CONTENT_URI = content://com.android.contacts/data; /** * 得到所属列后,记住这些值,访问数据库的速度可以提高两倍 */ public static final int RAW_CONTACT_ID=42; public static final int MIMETYPE=8; public static final int DISPLAY_NAME=51; public static final int TYPE=71; public static final int NUMBER=51; public static final int COMPANY=51; public static final int NAME=51; /** * 获取联系人信息,并把数据转换成json数据 * * @return * @throws JSONException */ public String getContactInfo() throws JSONException { jsonObject = new JSONArray(); list = new ArrayList<>(); String mimetype = ""; int oldrid = -1; int contactId = -1; int numm = 0; // 1.查询通讯录所有联系人信息,通过id排序,我们看下android联系人的表就知道,所有的联系人的数据是由RAW_CONTACT_ID来索引开的 // 所以,先获取所有的人的RAW_CONTACT_ID ContentResolver resolver = context.getContentResolver(); Cursor cursor = resolver.query(ContactsContract.Data.CONTENT_URI, null, null, null, Data.RAW_CONTACT_ID); while (cursor.moveToNext()) { /** int a=cursor.getColumnIndex(Data.RAW_CONTACT_ID);*/ contactId = cursor.getInt(RAW_CONTACT_ID); if (oldrid != contactId) { mailObject = new JSONObject(); phoneArray = new JSONArray(); jsonObject.put(mailObject); numm++; oldrid = contactId; /** mailObject.put("contactId",contactId);*/ mailObject.put("insert_time", ""); } // 取得mimetype类型,扩展的数据都在这个类型里面 /** int b=cursor.getColumnIndex(Data.MIMETYPE);*/ mimetype = cursor.getString(MIMETYPE); // 1.1,拿到联系人的各种名字 if (StructuredName.CONTENT_ITEM_TYPE.equals(mimetype)) { /** int c=cursor.getColumnIndex(StructuredName.DISPLAY_NAME);*/ Stri 4000 ng display_name = cursor.getString(DISPLAY_NAME); mailObject.put("display_name", display_name); } // 1.2 获取各种电话信息 if (Phone.CONTENT_ITEM_TYPE.equals(mimetype)) { JSONObject phoneObject = new JSONObject(); /** int g=cursor.getColumnIndex(Phone.TYPE);*/ int phoneType = cursor.getInt(TYPE); // 电话 if (phoneType == Phone.TYPE_HOME) { /** int d=cursor.getColumnIndex(Phone.NUMBER);*/ String homeNum = cursor.getString(NUMBER); phoneObject.put("type", "电话"); phoneObject.put("number", homeNum); phoneArray.put(phoneObject); } // 手机 if (phoneType == Phone.TYPE_MOBILE) { /** int d=cursor.getColumnIndex(Phone.NUMBER);*/ String mobile = cursor.getString(NUMBER); phoneObject.put("type", "手机"); phoneObject.put("number", mobile); phoneArray.put(phoneObject); } } //公司名称 if (Organization.CONTENT_ITEM_TYPE.equals(mimetype)) { /** int e=cursor.getColumnIndex(Organization.COMPANY);*/ String company = cursor.getString(COMPANY); mailObject.put("company",company); } //昵称 if (Nickname.CONTENT_ITEM_TYPE.equals(mimetype)) { /** int f=cursor.getColumnIndex(Nickname.NAME);*/ String nick_name = cursor.getString(NAME); mailObject.put("nick_name",nick_name); } mailObject.put("numbers",phoneArray); } cursor.close(); return jsonObject.toString(); } }
取出的数据例子:
"device_contacts":[{
"numbers": [
{
"type": "手机",
"number": "1 326-343-7884"
},
{
"type": "电话",
"number": "(555) 555-55"
}
],
"display_name": "Duffy",
"company": "Foggy",
"nick_name": "Foggy"
},
{
"numbers": [
{
"type": "手机",
"number": "1 326-343-7883"
},
{
"type": "电话",
"number": "(444) 444-44"
}
],
"display_name": "Wersdf",
"company": "Sdfsdf",
"nick_name": "Sdfsdfsdf"
},
{
"numbers": [
{
"type": "手机",
"number": "1 352-421-5398"
},
{
"type": "电话",
"number": "555-5555"
}
],
"display_name": "Xingming",
"company": "Gongsi",
"nick_name": "Nicheng"
}
]
相关文章推荐
- android获取手机联系人信息(电话,邮箱,姓名,头像)
- Android笔记--读取手机通讯录获取联系人信息
- Android中获取手机联系人的基本信息的实现
- Android 在自己的Activity中获取系统中联系人的姓名,电话等信息 .
- Android开发获取联系人信息&根据姓名查找电话%根据电话查找姓名
- Android获取手机联系人信息的方法
- 获取android手机联系人信息
- Android手机获取通讯录联系人信息及短信广播实现
- ContentProvider与隐式Intent获取手机联系人通讯录信息或电话的方法
- android:获取联系人信息(姓名和电话)
- Android 获取手机联系人信息
- Android获取手机名称,版本号,生产商等信息(转)
- ContentProvider与隐式Intent获取手机联系人通讯录信息或电话的方法
- Android 获取手机联系人信息
- Android获取手机联系人信息
- Android中获取手机中的联系人信息
- Android初级教程获取手机系统联系人信息
- android开发步步为营之11:从手机联系人列表获取联系电话
- Android初级教程获取手机系统联系人信息
- 实现读取手机中所有联系人的主要信息(名称和联系电话),并以ListView显示