在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);