天天看點

Android讀取SIM聯系人資訊

 在android1.6及以前的版本中查詢手機中的電話用android.provider.contacts.people.content_uri

在android2.0及以後(目前到了2.1,再往後不能保證無變化)用android.provider.contactscontract.commondatakinds.phone.content_uri

android2.0中擷取手機裡聯系人的方法:

public void getcontact(){

//獲得所有的聯系人

cursor cur = getcontentresolver().query(contactscontract.contacts.content_uri, null, null, null, null);

//循環周遊

if (cur.movetofirst()) {

int idcolumn = cur.getcolumnindex(contactscontract.contacts._id);

int displaynamecolumn = cur.getcolumnindex(contactscontract.contacts.display_name);

do {

//獲得聯系人的id号

string contactid = cur.getstring(idcolumn);

//獲得聯系人姓名

string displayname = cur.getstring(displaynamecolumn);

//檢視該聯系人有多少個電話号碼。如果沒有這傳回值為0

int phonecount = cur.getint(cur

.getcolumnindex(contactscontract.contacts.has_phone_number));

if(phonecount>0){

//獲得聯系人的電話号碼

cursor phones = getcontentresolver().query(

contactscontract.commondatakinds.phone.content_uri,

null,

contactscontract.commondatakinds.phone.contact_id

+ " = " + contactid, null, null);

if(phones.movetofirst()){

do{

//周遊所有的電話号碼

string phonenumber= phones.getstring(phones

.getcolumnindex(contactscontract.commondatakinds.phone.number));

system.out.println(phonenumber);

}while(phones.movetonext());

}

} while (cur.movetonext());

在聯系人的電話号碼中有很多種,如果隻想獲得手機号碼。代碼如下:

java代碼

cursor phones = mcontext.getcontentresolver().query(

+ " = " + contactid +" and "+contactscontract.commondatakinds.phone.type+"="+contactscontract.commondatakinds.phone.type_mobile, null, null);

繼續閱讀