android中是如何获取联系人所有信息的
生活随笔
收集整理的這篇文章主要介紹了
android中是如何获取联系人所有信息的
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
這篇文章將為大家詳細講解有關(guān)android中是如何獲取聯(lián)系人所有信息的,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。
工具類:
packagecom.example.test;
importjava.util.ArrayList;
importjava.util.List;
importorg.json.JSONException;
importorg.json.JSONObject;
importandroid.content.Context;
importandroid.database.Cursor;
importandroid.provider.ContactsContract.CommonDataKinds.Email;
importandroid.provider.ContactsContract.CommonDataKinds.Event;
importandroid.provider.ContactsContract.CommonDataKinds.Im;
importandroid.provider.ContactsContract.CommonDataKinds.Nickname;
importandroid.provider.ContactsContract.CommonDataKinds.Note;
importandroid.provider.ContactsContract.CommonDataKinds.Organization;
importandroid.provider.ContactsContract.CommonDataKinds.Phone;
importandroid.provider.ContactsContract.CommonDataKinds.StructuredName;
importandroid.provider.ContactsContract.CommonDataKinds.StructuredPostal;
importandroid.provider.ContactsContract.CommonDataKinds.Website;
importandroid.provider.ContactsContract.Contacts;
importandroid.provider.ContactsContract.Data;
importandroid.util.Log;
/**
*
*@authorlarson
*
*/
publicclassContactUtil{
privateList<Contacts>list;
privateContextcontext;
privateJSONObjectcontactData;
privateJSONObjectjsonObject;
publicContactUtil(Contextcontext){
this.context=context;
}
//ContactsContract.Contacts.CONTENT_URI=content://com.android.contacts/contacts;
//ContactsContract.Data.CONTENT_URI=content://com.android.contacts/data;
/**
*獲取聯(lián)系人信息,并把數(shù)據(jù)轉(zhuǎn)換成json數(shù)據(jù)
*
*@return
*@throwsJSONException
*/
publicStringgetContactInfo()throwsJSONException{
list=newArrayList<Contacts>();
contactData=newJSONObject();
Stringmimetype="";
intoldrid=-1;
intcontactId=-1;
//1.查詢通訊錄所有聯(lián)系人信息,通過id排序,我們看下android聯(lián)系人的表就知道,所有的聯(lián)系人的數(shù)據(jù)是由RAW_CONTACT_ID來索引開的
//所以,先獲取所有的人的RAW_CONTACT_ID
Cursorcursor=context.getContentResolver().query(Data.CONTENT_URI,
null,null,null,Data.RAW_CONTACT_ID);
intnumm=0;
while(cursor.moveToNext()){
contactId=cursor.getInt(cursor
.getColumnIndex(Data.RAW_CONTACT_ID));
if(oldrid!=contactId){
jsonObject=newJSONObject();
contactData.put("contact"+numm,jsonObject);
numm++;
oldrid=contactId;
}
mimetype=cursor.getString(cursor.getColumnIndex(Data.MIMETYPE));//取得mimetype類型,擴展的數(shù)據(jù)都在這個類型里面
//1.1,拿到聯(lián)系人的各種名字
if(StructuredName.CONTENT_ITEM_TYPE.equals(mimetype)){
cursor.getString(cursor
.getColumnIndex(StructuredName.DISPLAY_NAME));
Stringprefix=cursor.getString(cursor
.getColumnIndex(StructuredName.PREFIX));
jsonObject.put("prefix",prefix);
StringfirstName=cursor.getString(cursor
.getColumnIndex(StructuredName.FAMILY_NAME));
jsonObject.put("firstName",firstName);
StringmiddleName=cursor.getString(cursor
.getColumnIndex(StructuredName.MIDDLE_NAME));
jsonObject.put("middleName",middleName);
Stringlastname=cursor.getString(cursor
.getColumnIndex(StructuredName.GIVEN_NAME));
jsonObject.put("lastname",lastname);
Stringsuffix=cursor.getString(cursor
.getColumnIndex(StructuredName.SUFFIX));
jsonObject.put("suffix",suffix);
StringphoneticFirstName=cursor.getString(cursor
.getColumnIndex(StructuredName.PHONETIC_FAMILY_NAME));
jsonObject.put("phoneticFirstName",phoneticFirstName);
StringphoneticMiddleName=cursor.getString(cursor
.getColumnIndex(StructuredName.PHONETIC_MIDDLE_NAME));
jsonObject.put("phoneticMiddleName",phoneticMiddleName);
StringphoneticLastName=cursor.getString(cursor
.getColumnIndex(StructuredName.PHONETIC_GIVEN_NAME));
jsonObject.put("phoneticLastName",phoneticLastName);
}
//1.2獲取各種電話信息
if(Phone.CONTENT_ITEM_TYPE.equals(mimetype)){
intphoneType=cursor
.getInt(cursor.getColumnIndex(Phone.TYPE));//手機
if(phoneType==Phone.TYPE_MOBILE){
Stringmobile=cursor.getString(cursor
.getColumnIndex(Phone.NUMBER));
jsonObject.put("mobile",mobile);
}
//住宅電話
if(phoneType==Phone.TYPE_HOME){
StringhomeNum=cursor.getString(cursor
.getColumnIndex(Phone.NUMBER));
jsonObject.put("homeNum",homeNum);
}
//單位電話
if(phoneType==Phone.TYPE_WORK){
StringjobNum=cursor.getString(cursor
.getColumnIndex(Phone.NUMBER));
jsonObject.put("jobNum",jobNum);
}
//單位傳真
if(phoneType==Phone.TYPE_FAX_WORK){
StringworkFax=cursor.getString(cursor
.getColumnIndex(Phone.NUMBER));
jsonObject.put("workFax",workFax);
}
//住宅傳真
if(phoneType==Phone.TYPE_FAX_HOME){
StringhomeFax=cursor.getString(cursor
.getColumnIndex(Phone.NUMBER));
jsonObject.put("homeFax",homeFax);
}//尋呼機
if(phoneType==Phone.TYPE_PAGER){
Stringpager=cursor.getString(cursor
.getColumnIndex(Phone.NUMBER));
jsonObject.put("pager",pager);
}
//回撥號碼
if(phoneType==Phone.TYPE_CALLBACK){
StringquickNum=cursor.getString(cursor
.getColumnIndex(Phone.NUMBER));
jsonObject.put("quickNum",quickNum);
}
//公司總機
if(phoneType==Phone.TYPE_COMPANY_MAIN){
StringjobTel=cursor.getString(cursor
.getColumnIndex(Phone.NUMBER));
jsonObject.put("jobTel",jobTel);
}
//車載電話
if(phoneType==Phone.TYPE_CAR){
StringcarNum=cursor.getString(cursor
.getColumnIndex(Phone.NUMBER));
jsonObject.put("carNum",carNum);
}//ISDN
if(phoneType==Phone.TYPE_ISDN){
Stringisdn=cursor.getString(cursor
.getColumnIndex(Phone.NUMBER));
jsonObject.put("isdn",isdn);
}//總機
if(phoneType==Phone.TYPE_MAIN){
Stringtel=cursor.getString(cursor
.getColumnIndex(Phone.NUMBER));
jsonObject.put("tel",tel);
}
//無線裝置
if(phoneType==Phone.TYPE_RADIO){
StringwirelessDev=cursor.getString(cursor
.getColumnIndex(Phone.NUMBER));
jsonObject.put("wirelessDev",wirelessDev);
}//電報
if(phoneType==Phone.TYPE_TELEX){
Stringtelegram=cursor.getString(cursor
.getColumnIndex(Phone.NUMBER));
jsonObject.put("telegram",telegram);
}
//TTY_TDD
if(phoneType==Phone.TYPE_TTY_TDD){
Stringtty_tdd=cursor.getString(cursor
.getColumnIndex(Phone.NUMBER));
jsonObject.put("tty_tdd",tty_tdd);
}
//單位手機
if(phoneType==Phone.TYPE_WORK_MOBILE){
StringjobMobile=cursor.getString(cursor
.getColumnIndex(Phone.NUMBER));
jsonObject.put("jobMobile",jobMobile);
}
//單位尋呼機
if(phoneType==Phone.TYPE_WORK_PAGER){
StringjobPager=cursor.getString(cursor
.getColumnIndex(Phone.NUMBER));
jsonObject.put("jobPager",jobPager);
}//助理
if(phoneType==Phone.TYPE_ASSISTANT){
StringassistantNum=cursor.getString(cursor
.getColumnIndex(Phone.NUMBER));
jsonObject.put("assistantNum",assistantNum);
}//彩信
if(phoneType==Phone.TYPE_MMS){
Stringmms=cursor.getString(cursor
.getColumnIndex(Phone.NUMBER));
jsonObject.put("mms",mms);
}
StringmobileEmail=cursor.getString(cursor
.getColumnIndex(Email.DATA));
jsonObject.put("mobileEmail",mobileEmail);
}
}
//查找event地址
if(Event.CONTENT_ITEM_TYPE.equals(mimetype)){//取出時間類型
inteventType=cursor.getInt(cursor.getColumnIndex(Event.TYPE));//生日
if(eventType==Event.TYPE_BIRTHDAY){
Stringbirthday=cursor.getString(cursor
.getColumnIndex(Event.START_DATE));
jsonObject.put("birthday",birthday);
}
//周年紀念日
if(eventType==Event.TYPE_ANNIVERSARY){
Stringanniversary=cursor.getString(cursor
.getColumnIndex(Event.START_DATE));
jsonObject.put("anniversary",anniversary);
}
}
//獲取即時通訊消息
if(Im.CONTENT_ITEM_TYPE.equals(mimetype)){//取出即時消息類型
intprotocal=cursor.getInt(cursor.getColumnIndex(Im.PROTOCOL));
if(Im.TYPE_CUSTOM==protocal){
StringworkMsg=cursor.getString(cursor
.getColumnIndex(Im.DATA));
jsonObject.put("workMsg",workMsg);
}elseif(Im.PROTOCOL_MSN==protocal){
StringworkMsg=cursor.getString(cursor
.getColumnIndex(Im.DATA));
jsonObject.put("workMsg",workMsg);
}
if(Im.PROTOCOL_QQ==protocal){
StringinstantsMsg=cursor.getString(cursor
.getColumnIndex(Im.DATA));
jsonObject.put("instantsMsg",instantsMsg);
}
}
//獲取備注信息
if(Note.CONTENT_ITEM_TYPE.equals(mimetype)){
Stringremark=cursor.getString(cursor.getColumnIndex(Note.NOTE));
jsonObject.put("remark",remark);
}
//獲取昵稱信息
if(Nickname.CONTENT_ITEM_TYPE.equals(mimetype)){
StringnickName=cursor.getString(cursor
.getColumnIndex(Nickname.NAME));
jsonObject.put("nickName",nickName);
}
//獲取組織信息
if(Organization.CONTENT_ITEM_TYPE.equals(mimetype)){//取出組織類型
intorgType=cursor.getInt(cursor
.getColumnIndex(Organization.TYPE));//單位
if(orgType==Organization.TYPE_CUSTOM){//if(orgType==
//Organization.TYPE_WORK)
//{
Stringcompany=cursor.getString(cursor
.getColumnIndex(Organization.COMPANY));
jsonObject.put("company",company);
StringjobTitle=cursor.getString(cursor
.getColumnIndex(Organization.TITLE));
jsonObject.put("jobTitle",jobTitle);
Stringdepartment=cursor.getString(cursor
.getColumnIndex(Organization.DEPARTMENT));
jsonObject.put("department",department);
}
}
//獲取網(wǎng)站信息
if(Website.CONTENT_ITEM_TYPE.equals(mimetype)){//取出組織類型
intwebType=cursor.getInt(cursor.getColumnIndex(Website.TYPE));//主頁
if(webType==Website.TYPE_CUSTOM){
Stringhome=cursor.getString(cursor
.getColumnIndex(Website.URL));
jsonObject.put("home",home);
}//主頁
elseif(webType==Website.TYPE_HOME){
Stringhome=cursor.getString(cursor
.getColumnIndex(Website.URL));
jsonObject.put("home",home);
}
//個人主頁
if(webType==Website.TYPE_HOMEPAGE){
StringhomePage=cursor.getString(cursor
.getColumnIndex(Website.URL));
jsonObject.put("homePage",homePage);
}
//工作主頁
if(webType==Website.TYPE_WORK){
StringworkPage=cursor.getString(cursor
.getColumnIndex(Website.URL));
jsonObject.put("workPage",workPage);
}
}
//查找通訊地址
if(StructuredPostal.CONTENT_ITEM_TYPE.equals(mimetype)){//取出郵件類型
intpostalType=cursor.getInt(cursor
.getColumnIndex(StructuredPostal.TYPE));//單位通訊地址
if(postalType==StructuredPostal.TYPE_WORK){
Stringstreet=cursor.getString(cursor
.getColumnIndex(StructuredPostal.STREET));
jsonObject.put("street",street);
Stringciry=cursor.getString(cursor
.getColumnIndex(StructuredPostal.CITY));
jsonObject.put("ciry",ciry);
Stringbox=cursor.getString(cursor
.getColumnIndex(StructuredPostal.POBOX));
jsonObject.put("box",box);
Stringarea=cursor.getString(cursor
.getColumnIndex(StructuredPostal.NEIGHBORHOOD));
jsonObject.put("area",area);
Stringstate=cursor.getString(cursor
.getColumnIndex(StructuredPostal.REGION));
jsonObject.put("state",state);
Stringzip=cursor.getString(cursor
.getColumnIndex(StructuredPostal.POSTCODE));
jsonObject.put("zip",zip);
Stringcountry=cursor.getString(cursor
.getColumnIndex(StructuredPostal.COUNTRY));
jsonObject.put("country",country);
}
//住宅通訊地址
if(postalType==StructuredPostal.TYPE_HOME){
StringhomeStreet=cursor.getString(cursor
.getColumnIndex(StructuredPostal.STREET));
jsonObject.put("homeStreet",homeStreet);
StringhomeCity=cursor.getString(cursor
.getColumnIndex(StructuredPostal.CITY));
jsonObject.put("homeCity",homeCity);
StringhomeBox=cursor.getString(cursor
.getColumnIndex(StructuredPostal.POBOX));
jsonObject.put("homeBox",homeBox);
StringhomeArea=cursor.getString(cursor
.getColumnIndex(StructuredPostal.NEIGHBORHOOD));
jsonObject.put("homeArea",homeArea);
StringhomeState=cursor.getString(cursor
.getColumnIndex(StructuredPostal.REGION));
jsonObject.put("homeState",homeState);
StringhomeZip=cursor.getString(cursor
.getColumnIndex(StructuredPostal.POSTCODE));
jsonObject.put("homeZip",homeZip);
StringhomeCountry=cursor.getString(cursor
.getColumnIndex(StructuredPostal.COUNTRY));
jsonObject.put("homeCountry",homeCountry);
}
//其他通訊地址
if(postalType==StructuredPostal.TYPE_OTHER){
StringotherStreet=cursor.getString(cursor
.getColumnIndex(StructuredPostal.STREET));
jsonObject.put("otherStreet",otherStreet);
StringotherCity=cursor.getString(cursor
.getColumnIndex(StructuredPostal.CITY));
jsonObject.put("otherCity",otherCity);
StringotherBox=cursor.getString(cursor
.getColumnIndex(StructuredPostal.POBOX));
jsonObject.put("otherBox",otherBox);
StringotherArea=cursor.getString(cursor
.getColumnIndex(StructuredPostal.NEIGHBORHOOD));
jsonObject.put("otherArea",otherArea);
StringotherState=cursor.getString(cursor
.getColumnIndex(StructuredPostal.REGION));
jsonObject.put("otherState",otherState);
StringotherZip=cursor.getString(cursor
.getColumnIndex(StructuredPostal.POSTCODE));
jsonObject.put("otherZip",otherZip);
StringotherCountry=cursor.getString(cursor
.getColumnIndex(StructuredPostal.COUNTRY));
jsonObject.put("otherCountry",otherCountry);
}
}
cursor.close();
Log.i("contactData",contactData.toString());
returncontactData.toString();
}
}
總結(jié)
以上是生活随笔為你收集整理的android中是如何获取联系人所有信息的的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Win10系统,安装虚拟机,是微软自家的
- 下一篇: cmd简单代码雨的方法