標籤:
1、建立內容提供者的時候用到ContentProvider
使用內容提供者的時候用到ContentResolver2、UriMatcher——用於判斷一條uri跟指定的多條uri中的哪條匹配【需要添加匹配規則】 匹配規則中路徑後面還可以攜帶以下符號【通常作為查詢的where條件使用】: * 代表任何的文本 # 代表任何數字3、為什麼使用ContentProvider而不直接把資料庫改成公開的? 因為使用ContentProvider可以自己定義訪問規則,選擇私人資料哪些共用,哪些不共用,加強資料的安全性,ContentProvider不僅僅只共用資料庫,文本等也可以共用,但是我們用的最多的還是共用資料庫4、擷取系統簡訊 查詢sms表:address - date - type - body 路徑和表名可以不同,路徑不同不代表查的表就不同,路徑不同代表的是不同的查詢條件 inbox --> 查到的是收件匣的訊息5、插入簡訊 <1> type 1 —— 代表寫,2 —— 代表讀 <2> 插入時讀寫權限都需要,因為我們不知道 內容提供者中的 insert 的具體實現 6、getType —— 返回通過指定uri擷取的資料的mimetype,mimetype 公司自己定義,自己使用 vnd.android.cursor.dir/ --> 表示返回多條資料 vnd.android.cursor.item/ --> 表示返回單條資料7、擷取系統連絡人 (1) 要查詢的表及欄位 raw_contacts表 contact_id:連絡人id data表:儲存連絡人的詳細資料,一條資訊是一行 data1:連絡人資訊的具體內容 raw_contact_id:連絡人id,標識該行資訊屬於哪個連絡人 mimetype_id:標識該行資訊屬於什麼類型 mimetypes表:mimetype_id對應的mime類型 (2) 查詢data表示是複合查詢,查詢的不只是data表,直接查詢mimetypes表中的mimetype,而不查詢mimetype_id,因為mimetype_id就是指向mimetypes表中的mimetype,因此data中只查詢data1和mimetype欄位就可以了 (3) 實現步驟: <1> 先拿到raw_contacts表中的contact_id
<2> 拿著連絡人id去data表查詢屬於該連絡人的資訊 (4) 封裝資料 將資料封裝為一個java類,類中設定get/set方法 (5) 手機連絡人就算刪除,在手機中也不會完全刪除,只是連絡人id為null,所以無法在手機上的連絡人清單中顯示
內容提供者總結