android2 1取得通訊錄聯絡人名字和電話號碼

2021-08-26 03:18:15 字數 2628 閱讀 7669

當我們將andorid1.5及其以前的專案放到android2.0上時,如果**中有

import android.provider.contacts;
eclipse會提示「建議不使用」,那是因為在android2.0中,聯絡人api發生了變化,需要使用contactscontract。

直接看下面乙個最簡單的例子,讀取聯絡人的姓名和**號碼:

讀取聯絡人的名字很簡單,但是在讀取**號碼時,就需要先去的聯絡人的id,然後在通過id去查詢**號碼!乙個聯絡人可能存在多個**號碼!

// 取得contentresolver物件      

contentresolver cr = getcontentresolver();

// 取得通訊錄的游標

string orderby = phonelookup.display_name + " collate localized asc";

cursor cursor = cr.query(contactscontract.contacts.content_uri, null, null, null, orderby);

// 遍歷通訊錄

arraylist> listitem = new arraylist>();

for(int i=0; imap = new hashmap();

cursor.movetoposition(i);

// no.

map.put(column_id, i + 1);

// 取得聯絡人名字

int namefieldcolumnindex = cursor.getcolumnindex(phonelookup.display_name);

string name = cursor.getstring(namefieldcolumnindex);

map.put(column_name, name);

// 取得聯絡人id

string contactid = cursor.getstring(cursor.getcolumnindex(contactscontract.contacts._id));

cursor phone = cr.query(contactscontract.commondatakinds.phone.content_uri,

null,

contactscontract.commondatakinds.phone.contact_id + " = " + contactid,

null, null);

string number = "";

// 取得**號碼(可能存在多個號碼)

for(int j = 0; j < phone.getcount(); j++)

number += strphonenumber;

}

map.put(column_number, number);

log.d(tag, "number = " + number);

phone.close();

listitem.add(map);

// cursor emails = getcontentresolver().query(

// contactscontract.commondatakinds.email.content_uri,

// null,

// contactscontract.commondatakinds.email.contact_id

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

// while (emails.movetonext())

// emails.close();

}

cursor.close();

// 生成介面卡的item和動態陣列對應的元素

******adapter listitemadapter = new ******adapter(this,

listitem,// 資料來源

r.layout.list_item,// listitem的xml實現

// 動態陣列與listitem對應的子項

new string ,

new int );

lv.setadapter(listitemadapter);//lv為listview

lv.setonitemselectedlistener( new adapterview.onitemselectedlistener()

public void onnothingselected(adapterview<?> arg0)

});lv.setonitemclicklistener(new adapterview.onitemclicklistener()

});

}

public void displaytoast(string str)

Android讀取通訊錄資料

第一步,配置許可權 如果需要儲存,還需要儲存許可權 第二步,編寫聯絡人獲取工具類contractsutil public class contractsutil 根據uri查詢相應的contentprovider,cursor為獲取到的資料集 cursor cursor context.getcon...

android系統 通訊錄路徑

在 data data com.android.providers.contacts存放了通訊錄的資訊,其中資料庫是採用sqlite。data data com.android.providers.包含了android自帶的一些功能。com.android.providers.calendar是日曆...

android 通訊錄中賈(jia gu)處理

在通訊錄中使用拼音搜尋搜j時,賈不會出現,使用g搜尋時會出現。找了很久也沒有找到合適的辦法,最後只能用以下方法來處理 final char la u8d3e this is hanzi log.i xiao character character if offset 0 la character t...