Android获取联系人信息[名字,手机,电话,公司名称,昵称]

来源:互联网 发布:今日头条mac版下载 编辑:程序博客网 时间:2024/04/30 21:53

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);*/                String 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"

    }

]


阅读全文
0 0
原创粉丝点击