當我們將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...