有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    我建议您在项目中使用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);
    

    参考资料: