Android中的java:如何检索我所有联系人的所有电话号码和所有电子邮件(主要、工作、其他)
我需要在json对象中检索具有所有电话号码、电子邮件ID的所有联系人,如(示例单个联系人对象):
[{
"id": 123,
"displayName": "Name",
"company": "Company",
"title": "Title",
"numbers": [{
"type": "home",
"number": "957842"
}, {
"type": "work",
"number": "54654654"
}, {
"type": "other",
"number": "465454"
}, {
"type": "other",
"number": "5465431"
}, {
"type": "other",
"number": "54321"
}, {
"type": "other",
"number": "6546545"
}],
"emails": [{
"type": "home",
"email": "asd@gmail.com"
}, {
"type": "work",
"email": "asdas@gmail.com"
}, {
"type": "other",
"email": "asdasd@gmail.com"
}, {
"type": "other",
"email": "sdasdmail.com"
}]
}]
我当前代码中的代码段如下所示:
String searchQuery = "_id > " + lastReadId;
Cursor contactUrl = cContext.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,searchQuery,null,"_id ASC");
Log.e(TAG, "getContact >> " + contactUrl.getCount());
while (contactUrl.moveToNext())
{
objChild = new JSONObject();
String name=contactUrl.getString(contactUrl.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String number=contactUrl.getString(contactUrl.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
int phoneContactID = contactUrl.getInt(contactUrl.getColumnIndex(ContactsContract.CommonDataKinds.Phone._ID));
int phone_type = contactUrl.getInt(contactUrl.getColumnIndex(Phone.TYPE));
objChild.put("name",name);
objChild.put("number",number);
objChild.put("phone_type", number);
Log.e(TAG, "objChild : " + objChild.toString());
我目前的联系方式如下:
http://i.stack.imgur.com/MNuWH.png
http://i.stack.imgur.com/fs8Qk.png
无论我在stackoverflow中得到的代码是给我一个联系人电话号码还是多个联系人有多个号码(我可以处理相同的号码,但这需要很长时间,可能会导致性能问题)
我的要求是获取所有电话号码&;单个联系人的电子邮件ID强>
# 1 楼答案
我建议您在项目中使用Gson,以便于JSON解析
步骤1
打开jsonschema2pojo网站
Ste 2
在给定空间中复制/粘贴JSON字符串,并选择以下选项与Gson一起使用
步骤3
点击预览按钮,准备好课程。在应用程序中复制粘贴完整类。否则您也可以选择jar来获取类
Ste 4
下载Gson库并将其添加到项目中
下载Gson:google-gson
步骤5
最后一步。在下面写一行代码,将JSON字符串转换为类对象
参考资料: