在Android中:如何检索所有联系人

时间:2015-09-10 06:20:23

标签: java android android-contacts

我需要使用所有电话号码来检索所有联系人,在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中获得的代码是给我单个联系人的电话号码或多个联系人,这些联系人有多个号码(我可以操作相同,但这会花费很多时间并可能导致性能问题)

我的要求是获取所有电话号码&单个联系人的电子邮件。

1 个答案:

答案 0 :(得分:0)

我建议您在项目中使用Gson进行简单的JSON解析

第1步

打开 jsonschema2pojo 网站。

Ste 2

在给定空间中复制/粘贴JSON字符串,并选择以下选项以与Gson一起使用。

  • 根据您的要求输入packagename和classname
  • 选择JSON作为源类型
  • 选择Gson作为注释样式

enter image description here

第3步

点击 预览 按钮即可获得现成的课程。复制粘贴应用程序中的完整类。否则,您也可以选择 jar 来获取课程。

Ste 4

下载并添加Gson库到您的项目

下载Gson:google-gson

第5步

最后一步。写下面的短代码行将JSON字符串转换为类对象

Gson gson = new Gson();
List<PersonBean> details = gson.fromJson(strJsonData, PersonBean.class);

参考文献: