contentprovider:
1、contentprovider為儲存和讀取資料提供統一的介面;
2、使用contentprovider,應用程式可以實現資料共享;
uri:universal resource identifier
e.g:聯絡人uri 為content://contacts/people
1:需要操作的contentprovider;2:對contentprovider中的什麼資料進行操作
由以下幾個部分組成:
contentprovider(內容提供者)的scheme已經由android規定,scheme為:content://
主機名(authority)用於唯一標識這個contentprovider,外部呼叫者可以根據這個標識來找到它;contacts
路徑(path)可以用來表示我們要操作的資料:/people
使用contentresolver操作contentprovider中的資料:
當外部應用需要對contentprovider中的資料進行新增、刪除、修改和查詢操作時,可以使用contentresolver類來完成(使用getcontentresolver()方法獲取);
contentresolver類提供了與contentprovider類相同簽名的四個方法:
public uri insert(uri uri,contentvalues values):該方法用於往contentprovider新增資料。
public int delete(uri uri,string selection,string selectionargs);該方法用於從contentprovider刪除資料。
public int update(uri uri,contentvalues values,string selection,string selectionargs);該方法用於更新contentprovider中的資料。
public cursor query(uri uri,string projection,string selection,string selectionargs,string sortorder):該方法用於從contentprovider獲取資料。
e.g:
contentresolver resolver = getcontentresolver();//獲取contentresolver
uri uri = uri.parse(「content://contacts/people」);//要操作的contentprovider
contentvalues values = new contentvalues();
values.put(「name」,」sunrise");
values.put(「number」,」18617191218」);
resolver.insert(uri,values);
監聽contentprovider中資料的變化
呼叫getcontentresolver().notifychange(uri,null)來通知註冊在此url上的訪問者。
listview ******adapter:
/********adapter屬於adapter介面卡的一種,是資料和listview之間的橋梁
* 第乙個引數:activitiy的上下文
* 第二個引數:生成的乙個map列表選項
* 第三個引數:listview一行的分布樣式,可以自己定義,可以使用android系統本身
* 第四個引數:定義map中有哪些key
* 第五個引數:用來填充的元件,對應於第四個引數中的key
**/
adapter
=new
******adapter(
this
, getdata(),
r.layout.
listview,
new string,
newint);
getdata():返回乙個list>的乙個列表。
/**定義儲存資料的list,並返回給******adapter**/
list> contact =
newarraylist>();
/**使用contentresolver操作contentprovider中的資料**/
contentresolver resolver = getcontentresolver();
/**使用query獲取contentprovider的資料
android2.0以後聯絡人就由contactscontract類替換了people類
**/cursor c = resolver.query(contactscontract.contacts.
content_uri
, null
, null
, null
, null);
/*獲取特定的資料列,並按照聯絡人姓名排列*/
cursor c = resolver.query(contactscontract.contacts.
content_uri
, phones_projection
, null
, null
, "display_name desc");
第乙個引數:url,確定要操作的資料(指定所要操作的contentprovider)
第二個引數:指定列的資料
第三個引數:指定行的資料
第四個引數:
第五個引數:可以定義返回資料的排列
然後使用cursor來對我們的聯絡人資料進行處理:
行、列;
e.g:獲取聯絡人姓名
/*首先獲取聯絡人處於該資料庫的第幾列*/
intdisplaynamecolumn = c.getcolumnindex(contactscontract
.contacts.display_name);
/*然後獲取該列的資料即是要取得的聯絡人的姓名(行數由c.movotonext()來互動)*/
string name = c.getstring(displaynamecolumn)
IOS Contacts獲取聯絡人
新框架中將要使用最多的應該就是cncontactstore這個類了,官方對其的定義是乙個執行緒安全的,用來執行查詢和修改操作的類。此外官方還針對於這個類的使用給出了幾點小建議。1.只去查詢那些你需要的聯絡人屬性。2.當查詢所有聯絡人並快取結果時,首先查詢所有聯絡人的identifier,然後通過id...
獲得聯絡人
注意在 後要加上 貌似從android2.0開始,聯絡人的api做了很大的調整。people介面由contactscontract.contacts代替。在聯絡人的 號碼中有很多種,如果只想獲得手機號碼。如下 cursor phones mcontext.getcontentresolver que...
同步聯絡人
從我的舊的n70手機中同步聯絡人到新的android手機中。首先,安裝nokia的pc套件,匯出手機中的所有聯絡人到電腦硬碟中。儲存成 csv 檔案形式。登陸gmail,在gmail的左邊有通訊錄一覽,可以匯入csv檔案,將所有聯絡人儲存到gmail中。此時開啟android 手機中的通訊錄,就可以...