您的位置:首页 > 移动开发 > Android开发

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"

    }

]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: