




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
自定義ContentProvider2023/9/28122023/9/28Uri實現(xiàn)ContentProvider目錄CONTENT12參考教材:《Android應用開發(fā)項目化教程》Uri含義Uri(通用資源標志符:UniversalResourceIdentifier)用來標識唯一的數(shù)據(jù)集。1Uri作用ContentProvider通過暴露一個公共的Uri來標識唯一的數(shù)據(jù)集。ContentProvider可以控制多個數(shù)據(jù)集并為每一個數(shù)據(jù)集提供一個Uri。如果定義了一個ContentProvider,就需要同時為它的Uri定義一個常量。1Uri組成
content://user_dictionary/words
A:標準前綴,用來說明這是一個ContentProvider所控制的數(shù)據(jù)集。B:Uri的權限,它定義了是哪個ContentProvider提供這些數(shù)據(jù)。C:路徑,ContentProvider使用這些路徑來確定當前需要什么類型的數(shù)據(jù)。D:如果Uri中包含該部分,表示需要獲取記錄的ID;如果沒有ID,就表示返回全部。1Uri組成示例所有聯(lián)系人的Uri:content://contacts/people某個聯(lián)系人的Uri:content://contacts/people/5所有圖片Uri:content://media/external某個圖片的Uri:content://media/external/images/media/41Uri處理工具UriMatcherUriMatcher類主要用于匹配Uri。使用步驟:①初始化UriMatcher常量UriMatcher.NO_MATCH表示不匹配任何路徑,返回碼是1。1Uri處理工具UriMatcherUriMatcher類主要用于匹配Uri。使用步驟:②注冊需要匹配的Uri路徑addURI()方法添加需要匹配的Uri,第一個參數(shù)傳入標識ContentProvider的Authority字符串。第二個參數(shù)傳入需要匹配的路徑,這里的#代表匹配任意數(shù)字,另外還可以用*來匹配任意文本。第三個參數(shù)必須傳入一個大于零的匹配碼,用于match()方法對相匹配的Uri返回相對應的匹配碼。1Uri處理工具UriMatcherUriMatcher類主要用于匹配Uri。使用步驟:③使用uriMatcher.match(uri)方法對輸入的Uri進行匹配,如果匹配就返回匹配碼(大于0)若無法匹配傳入的Uri,拋出IllegalArgumentException異常。1Uri處理工具ContentUrisContentUris用于獲取Uri路徑后面的ID部分。方法:withAppendedId(uri,id)用于為路徑加上ID部分parseId(uri)用于從路徑中獲取ID部分。Uri
uri
=
Uri.parse("content://com.yfz.Lesson/people");Uri
resultUri
=
ContentUris.withAppendedId(uri,
10);
long
personid
=
ContentUris.parseId(uri);
1實現(xiàn)ContentProvider自定義ContentProvider的目的如果App具有以下功能,建議使用想為其他應用提供復雜的數(shù)據(jù)或文件想允許用戶將復雜的數(shù)據(jù)從自己的應用復制到其他應用中想使用搜索框架提供自定義搜索建議如果完全是在自己的應用中使用,建議直接使用SQLite數(shù)據(jù)庫。2實現(xiàn)ContentProvider設計步驟為數(shù)據(jù)設計原始存儲。文件數(shù)據(jù)“結構化”數(shù)據(jù)定義ContentProvider類及其所需方法的具體實現(xiàn)。定義提供程序的權限字符串、其內容URI以及列名稱。添加其他可選部分。2實現(xiàn)ContentProvider設計數(shù)據(jù)存儲使用SQLiteOpenHelper來創(chuàng)建和管理SQLite數(shù)據(jù)庫。2實現(xiàn)ContentProvider設計數(shù)據(jù)存儲使用SQLiteOpenHelper來創(chuàng)建和管理SQLite數(shù)據(jù)庫。注意:表數(shù)據(jù)應始終具有一個“主鍵”列,提供程序將其作為與每行對應的唯一數(shù)字值加以維護。使用BaseColumns._ID是最佳選擇。如果想提供位圖圖像或其他非常龐大的文件導向型數(shù)據(jù),請將數(shù)據(jù)存儲在一個文件中,然后間接提供這些數(shù)據(jù),而不是直接將其存儲在表中。使用二進制大型對象(BLOB)數(shù)據(jù)類型存儲大小或結構會發(fā)生變化的數(shù)據(jù)。2實現(xiàn)ContentProvider設計內容URI內容URI是用于在提供程序中標識數(shù)據(jù)的URI。設計路徑結構提供程序通常具有單一權限,該權限充當其Android內部名稱。建議以package+provider構成
com.example.<appname>.provider
2實現(xiàn)ContentProvider設計內容URI內容URI是用于在提供程序中標識數(shù)據(jù)的URI。設計權限開發(fā)者通常通過追加指向單個表的路徑來根據(jù)權限創(chuàng)建內容URI。路徑并不限定于單個段,也無需為每一級路徑都創(chuàng)建一個表。
com.example.<appname>.provider/table1
com.example.<appname>.provider/table2
2實現(xiàn)ContentProvider設計內容URI內容URI是用于在提供程序中標識數(shù)據(jù)的URI。處理內容URIIDContentProvider通過接受末尾具有行所對應ID值的內容URI來提供對表中單個行的訪問。定義CursorAdapter的條件是,Cursor中的其中一個列必須是_ID。2實現(xiàn)ContentProvider設計內容URI內容URI是用于在提供程序中標識數(shù)據(jù)的URI。內容URI模式對傳入的內容URI執(zhí)行的操作
content://vider/table1:一個名為
table1
的表 content://vider/table2/dataset1:一個名為
dataset1
的表 content://vider/table2/dataset2:一個名為
dataset2
的表 content://vider/table3:一個名為
table3
的表2實現(xiàn)ContentProvider設計內容URI內容URI是用于在提供程序中標識數(shù)據(jù)的URI。內容URI模式可執(zhí)行模式
content://vider/* 匹配提供程序中的任何內容URI content://vider/table2/*匹配表
dataset1
和表
dataset2
的內容URI, 但不匹配
table1
或
table3
的內容URI content://vider/table3/#匹配
table3
中單個行的內容URI
2實現(xiàn)ContentProvider實現(xiàn)ContentProvider類實現(xiàn)6個抽象方法query(Uriuri,String[]projection,Stringselection,String[]selectionArgs,StringsortOrder)insert(Uriuri,ContentValuesvalues))update(Uriuri,ContentValuesvalues,Stringselection,String[]selectionArgs)delete(Uriuri,Stringselection,String[]selectionArgs))getType(Uriuri)onCreate()2實現(xiàn)ContentProvider實現(xiàn)ContentProvider類示例2實現(xiàn)ContentProvider實現(xiàn)ContentProvider類實現(xiàn)ContentProviderMIME類型兩個返回MIME類型的方法:getType()返回一個MIME格式的String,后者描述內容URI參數(shù)返回的數(shù)據(jù)類型。getStreamTypes()為給定內容URI返回的文件返回一個MIME類型String數(shù)組。2實現(xiàn)ContentProvider實現(xiàn)ContentProvider類實現(xiàn)ContentProviderMIME類型表的MIME類型對于指向一個或多個表數(shù)據(jù)行的內容URI,getType()應該以Android供應商特有MIME格式返回MIME類型:類型部分:vnd子類型部分:
○
如果URI模式用于單個行:android.cursor.item/
○如果URI模式用于多個行:android.cursor.dir/提供程序特有部分:vnd.<name>.<type>2實現(xiàn)ContentProvider實現(xiàn)Conte
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 幼兒園六一兒童節(jié)主題游園活動安全應急方案范文
- 計算機輔助設計及 AutoCAD知到智慧樹章節(jié)測試課后答案2024年秋云南國防工業(yè)職業(yè)技術學院
- 急診醫(yī)學知到智慧樹章節(jié)測試課后答案2024年秋云南中醫(yī)藥大學
- 送石灰合同范本
- 2025年貴州應用技術職業(yè)學院單招職業(yè)適應性測試題庫參考答案
- 環(huán)境測試合同范本
- 2025年河北旅游職業(yè)學院單招職業(yè)技能測試題庫完整
- 電力安全生產教育培訓的現(xiàn)代科技應用
- 聲明改合同范本
- 2025-2030年中國生物丁醇行業(yè)風險評估與十三五規(guī)劃研究報告
- 《發(fā)展?jié)h語》-高級綜合Ⅰ-9高薪養(yǎng)廉與緣木求魚課件
- 電力公司備品備件管理制度
- 現(xiàn)金流量表編制案例
- 部編版二年級道德與法治下冊《學習有方法》教案及教學反思
- 八年級英語閱讀理解每日一練
- Q2起重機司機模擬考試100題(精選)
- 臨時設備和臨時用工計劃表
- 準社會交往研究綜述論文
- EPC工程總承包竣工驗收管理方案
- 發(fā)動機正時類寶馬m54圖
- 全身體格檢查總結及評分標準
評論
0/150
提交評論