《Android程序設(shè)計教程》課件第八章 ContentProvider數(shù)據(jù)共享_第1頁
《Android程序設(shè)計教程》課件第八章 ContentProvider數(shù)據(jù)共享_第2頁
《Android程序設(shè)計教程》課件第八章 ContentProvider數(shù)據(jù)共享_第3頁
《Android程序設(shè)計教程》課件第八章 ContentProvider數(shù)據(jù)共享_第4頁
《Android程序設(shè)計教程》課件第八章 ContentProvider數(shù)據(jù)共享_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第八章ContentProvider數(shù)據(jù)共享目錄8.1ContentProvider簡介8.1.1ContentProvider類 8.1.2ContentResolver類8.2開發(fā)ContentProvider程序8.2.1編寫ContentProvider子類8.2.2注冊ContentProvider8.2.3使用ContentProvider8.3操作系統(tǒng)的ContentProvider8.3.1管理聯(lián)系人 8.3.2管理多媒體 8.4ContentObserver學(xué)習(xí)目標(biāo)了解ContentProvider類和ContentResolver類能夠開發(fā)ContentProvider程序能夠操作系統(tǒng)的ContentProvider了解ContentObserver類8.1ContentProvider簡介ContentProvider是Android系統(tǒng)的四大組件之一,是不同應(yīng)用程序之間進(jìn)行數(shù)據(jù)交換的標(biāo)準(zhǔn)API,也是所有應(yīng)用程序之間數(shù)據(jù)存儲和檢索的一個橋梁,其作用是使各個應(yīng)用程序之間實現(xiàn)數(shù)據(jù)共享。它以Uri的形式對外提供數(shù)據(jù),允許其他應(yīng)用操作本應(yīng)用程序的數(shù)據(jù),其他應(yīng)用通過ContentResolver來訪問共享的數(shù)據(jù)。8.1.1ContentProvider類ContentProvider與Activity、Service、BroadcastReceiver類似,都是Android應(yīng)用的四大組件之一,需要在AndroidManifest.xml配置文件中進(jìn)行配置。在ContentProvider類的增、刪、改、查操作方法中,都用到類型為Uri的參數(shù),該參數(shù)是ContentProvider對外提供的一個自身數(shù)據(jù)集的唯一標(biāo)識。當(dāng)一個ContentProvider管理多個數(shù)據(jù)集時,該ContentProvider將會為每個數(shù)據(jù)集分配一個獨立且唯一的Uri。Uri的語法格式如下:content://數(shù)據(jù)路徑/標(biāo)識ID(可選)其中,“content://”是ContentProvider規(guī)定的協(xié)議,用來標(biāo)識ContentProvider所管理的scheam,是一個標(biāo)準(zhǔn)的前綴,不能被修改;“數(shù)據(jù)路徑”用于查找所要操作的ContentProvider;“標(biāo)識ID”是可選的,標(biāo)識不同數(shù)據(jù)資源,當(dāng)訪問不同資源時,該ID是動態(tài)改變的。Android系統(tǒng)提供了UriMatcher工具類對Uri進(jìn)行匹配判斷,該工具類提供了以下兩個常用的方法:?voidaddURI(Stringauthority,Stringpath,intcode):用于注冊Uri,其中參數(shù)authority和path組合成一個Uri,而參數(shù)code代表Uri對應(yīng)的標(biāo)識符;?intmatch(Uriuri):根據(jù)前面注冊的Uri判斷指定的Uri對應(yīng)的標(biāo)識符,如果找不到匹配的標(biāo)識碼,則返回-1.8.1.2ContentResolver類ContentProvider類中共享的數(shù)據(jù)不能被Android應(yīng)用程序直接訪問,而是通過操作ContentResolver類來間接操作ContentProvider中的數(shù)據(jù)。ContentResolver是內(nèi)容解析器,提供了對ContentProvider數(shù)據(jù)進(jìn)行查詢、插入、修改和刪除等操作方法。8.2開發(fā)ContentProvider程序開發(fā)ContentProvider程序的步驟如下:(1)創(chuàng)建一個ContentProvider子類,并實現(xiàn)query()、insert()、update()和delete()等方法。(2)在AndroidManifest.xml配置文件中注冊ContentProvider,并指定android:authorities屬性(一般自動注冊)。(3)使用ContentProvider,Activity和Service等組件都可以獲取ContentProvider對象,并調(diào)用該對象相應(yīng)的方法進(jìn)行操作。8.2.1編寫ContentProvider子類新建一個Android項目,在Java源文件夾上右擊,選擇New→Other→ContentProvider選項,彈出如圖8.1所示對話框,在ClassName文本框中輸入ContentProvider子類的類名,在URIAuthorities文本框中輸入數(shù)據(jù)路徑。8.2.2注冊ContentProvider在AndroidManifest.xml配置文件中注冊ContentProvider,只需在<application>元素中添加<provider>子元素即可,其示例代碼如下。<providerandroid:name=".MyContentProvider"android:authorities="tentprovider.myconentprovider"android:enabled="true"android:exported="true"></provider>8.2.3使用ContentProvider(1)首先需要修改相應(yīng)的XML布局文件(2)修改MainActivity.java文件8.3操作系統(tǒng)的ContentProviderAndroid系統(tǒng)本身提供了大量的ContentProvider,例如聯(lián)系人信息,系統(tǒng)的多媒體信息,系統(tǒng)短信等,程序員自己開發(fā)的Android應(yīng)用程序時,可以通過ContentResolver來調(diào)用系統(tǒng)ContentProvider所提供的query()、insert()、update()和delete()方法,如此即可對Android內(nèi)部數(shù)據(jù)進(jìn)行操作。8.3.1管理聯(lián)系人Android系統(tǒng)用于管理聯(lián)系人的ContentProvider的Uri有以下三種:ContactsContract.Contacts.CONTENT_URI:管理聯(lián)系人的Uri;ContactsContract.CommonDataKinds.Phone.CONTENT_URI:管理聯(lián)系人的電話Uri;ContactsContract.CommonDataKinds.Email.CONTENT_URI:管理聯(lián)系人的E-mail的Uri。8.3.2管理多媒體Android系統(tǒng)為多媒體提供了相應(yīng)的ContentProvider的Uri,具體如下所示:MediaStore.Audio.Media.EXTERNAL_CONTENT_URI:存儲在外部存儲(SD卡)上的音頻文件內(nèi)容的ContentProvider的Uri。MediaStore.Audio.Media.INTERNAL_CONTENT_URI:存儲在手機內(nèi)部存儲器上的音頻文件內(nèi)容的ContentProvider的Uri。MediaStore.Images.Media.EXTERNAL_CONTENT_URI:存儲在外部存儲器(SD卡)上的圖片文件內(nèi)容的ContentProvider的Uri。MediaStore.Images.Media.INTERNAL_CONTENT_URI:存儲在手機內(nèi)部存儲器上的圖片文件內(nèi)容的ContentProvider的uri。MediaStore.Video.Media.EXTERNAL_CONTENT_URI:存儲在外部存儲器(SD卡)上的視頻文件內(nèi)容的ContentProvider的Uri。MediaStore.Video.Media.INTERNAL_CONTENT_URI:存儲在手機內(nèi)部存儲器上的視頻文件內(nèi)容的ContentProvider的Uri。8.4ContentObserverContentObserver(內(nèi)容觀察者)的目的是觀察(捕獲)特定Uri引起的數(shù)據(jù)庫變化,繼而做出一些相應(yīng)的處理。它類似于數(shù)據(jù)庫技術(shù)中的觸發(fā)器,當(dāng)ContentObserver所觀察的Uri發(fā)生變化時,便會觸發(fā)ContentObserver的onChange()方法。觸發(fā)器分為表觸發(fā)器和行觸發(fā)器,相應(yīng)的ContentObserver也分為表ContentObserver和行ContentObserver,當(dāng)然這是與它所監(jiān)聽的UriMIMEType有關(guān)。ContentObserver的兩個常用方法,具體如下所示:ContentObserver(Handlerhandler):構(gòu)造

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論