《Android移動應用開發(fā)》自定義ContentProvider_第1頁
《Android移動應用開發(fā)》自定義ContentProvider_第2頁
《Android移動應用開發(fā)》自定義ContentProvider_第3頁
《Android移動應用開發(fā)》自定義ContentProvider_第4頁
《Android移動應用開發(fā)》自定義ContentProvider_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

自定義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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論