使用內(nèi)容提供者共享數(shù)據(jù)_第1頁
使用內(nèi)容提供者共享數(shù)據(jù)_第2頁
使用內(nèi)容提供者共享數(shù)據(jù)_第3頁
使用內(nèi)容提供者共享數(shù)據(jù)_第4頁
使用內(nèi)容提供者共享數(shù)據(jù)_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

博學谷——讓IT教學更簡單,讓IT學習更有效北京市昌平區(qū)建材城西路金燕龍辦公樓一層電話:400-618-4000傳智播客《Android移動應用基礎教程(AndroidStudio)(第2版)》教學設計課程名稱:《Android移動應用基礎教程(第2版)》授課年級:20xx年級授課學期:20xx學年第一學期教師姓名:某某老師20xx年xx月xx日課題名稱第7章使用內(nèi)容提供者共享數(shù)據(jù)計劃學時6學時內(nèi)容分析在Android開發(fā)中,有時也會訪問其他應用程序的數(shù)據(jù)。例如,使用支付寶轉(zhuǎn)賬時需要填寫收款人的電話號碼,此時就需要獲取到系統(tǒng)聯(lián)系人的信息。為了實現(xiàn)這種跨程序共享數(shù)據(jù)的功能,Android系統(tǒng)提供了一個組件ContentProvider(內(nèi)容提供者)。本章將針對內(nèi)容提供者進行詳細地講解。教學目標要求學生掌握內(nèi)容提供者的創(chuàng)建,并能使用內(nèi)容提供者操作數(shù)據(jù);要求學生了解內(nèi)容觀察者的使用,學會使用內(nèi)容觀察者觀察其他程序的數(shù)據(jù)變化。教學重點內(nèi)容提供者的使用、對數(shù)據(jù)進行增刪改查操作、內(nèi)容觀察者的使用。教學難點內(nèi)容提供者的使用、內(nèi)容觀察者的使用教學方式教師采用課堂講授為主,使用教學PPT輔助授課。教學過程第一學時(內(nèi)容提供者概述、創(chuàng)建內(nèi)容提供者)一、情景導入1、教師根據(jù)提出的問題,引出內(nèi)容提供者老師引導,通過數(shù)據(jù)庫、SharedPreferences和文件都可以存儲和訪問數(shù)據(jù),那么如果其他應用要寫訪問我們的應用中的數(shù)據(jù)應該怎么辦呢?然后引出內(nèi)容提供者,內(nèi)容提供者。2、教師根據(jù)課件,講述內(nèi)容提供者以及如何創(chuàng)建內(nèi)容提供者我們首先要了解什么是內(nèi)容提供者,接著熟悉如何創(chuàng)建內(nèi)容提供者。3、明確學習目標要求學生了解什么是內(nèi)容提供者要求學生掌握如何創(chuàng)建內(nèi)容提供者二、重點知識講解1、教師跟課件,講述內(nèi)容提供者概述老師講解,ContentProvider是Android中的四大組件之一,用于保存和檢索數(shù)據(jù),是不同應用程序之間共享數(shù)據(jù)的接口。ContentProvider是不同應用程序之間進行數(shù)據(jù)共享的標準API,如果想要訪問ContentProvider中共享的數(shù)據(jù),就一定要借助ContentResolver類,該類的實例需要通過Context中的getContentResolver()方法獲取。接下來向?qū)W生展示工作流程圖,如下。對流程圖進行解答,A程序需要使用ContentProvider暴露數(shù)據(jù),才能被其他程序操作。B程序必須通過ContentResolver操作A程序暴露出來的數(shù)據(jù),而A程序會將操作結(jié)果返回給ContentResolver,然后ContentResolver再將操作結(jié)果返回給B程序。接著介紹ContentResolver。它與SQLiteDatabase相類似,以Uri形式提供一系列增刪改查的方法對數(shù)據(jù)進行操作。Uri為內(nèi)容提供者中的數(shù)據(jù)建立了唯一標識符,向?qū)W生展示圖例,并對其講解。展示過后向?qū)W生講解。它主要由三部分組成,scheme、authorities和path。scheme部分“content://”是一個標準的前綴,表明這個數(shù)據(jù)被ContentProvider所控制,它不會被修改。authority部分“cn.itcast.mycontentprovider”是在創(chuàng)建內(nèi)容提供者時指定的authorities屬性值,主要用來區(qū)分不同的應用程序,一般為了避免沖突,都會采用程序包名的方式來進行命名。path部分“/person”代表資源(或者數(shù)據(jù)),當訪問者需要操作不同的數(shù)據(jù)時,這個部分是可以動態(tài)改變的。老師重點強調(diào),這幾個方法非常重要,要求學生必須要掌握。 2、教師根據(jù)課件,講述如何創(chuàng)建內(nèi)容提供者ContentProvider的創(chuàng)建方式與廣播接收者類似。在程序包名處點擊右鍵選擇【New】【Other】【ContentProvider】選項,在彈出窗口中輸入內(nèi)容提供者的ClassName(名稱)和URIAuthorities(唯一標識,通常使用包名)。填寫完成后點擊【Finish】按鈕,內(nèi)容提供者便創(chuàng)建完成。內(nèi)容提供者創(chuàng)建完成后,AndroidStudio會自動在AndroidManifest.xml中對內(nèi)容提供者進行注冊。老師演示如何創(chuàng)建內(nèi)容提供者,通過教材和PPT內(nèi)容向?qū)W生講解內(nèi)容提供者創(chuàng)建完成后的代碼,要求學生能夠熟練使用。三、歸納總結(jié),布置課后作業(yè)1、回顧上課前的學習目標,并對本節(jié)課的重要知識點進行總結(jié)。教師提問學生本節(jié)課需要掌握的知識點,包括內(nèi)容提供者概述與如何創(chuàng)建內(nèi)容提供者等知識,并對學生的回答進行補充和總結(jié)。2、布置隨堂練習,檢查學生掌握情況。根據(jù)博學谷和隨堂練習資源,給學生布置隨堂練習,檢測學生的掌握程度,并對學生出現(xiàn)的問題進行解決。3、使用博學谷系統(tǒng)中的測試題給學生布置作業(yè)。第二、三學時(查詢其他程序的數(shù)據(jù)、實戰(zhàn)演練——查看系統(tǒng)短信、什么是內(nèi)容觀察者)一、回顧上節(jié)講解的知識,引出本節(jié)需要講解的知識1、教師對上節(jié)課留的作業(yè)進行答疑。2、回顧上節(jié)課學習的內(nèi)容,引出本節(jié)課的內(nèi)容。老師引導,上節(jié)課講解了如何創(chuàng)建內(nèi)容提供者,接下來我們將講解如何通過內(nèi)容提供者程序其他程序的數(shù)據(jù)以及什么是內(nèi)容觀察者。3、明確學習目標要求學生掌握如何查詢其他程序的數(shù)據(jù)要求學生掌握如何實現(xiàn)查詢系統(tǒng)短信案例要求學生理解什么是內(nèi)容觀察者 二、重點知識講解1、教師根據(jù)課件,講述如何查詢其他程序的數(shù)據(jù)Android中應用程序是通過ContentProvider暴露數(shù)據(jù),再通過ContentResolver處理這些數(shù)據(jù),因此可以把ContentResolver看做是中介的角色。使用ContentProvider暴露數(shù)據(jù)時提供了相應操作的Uri,因此在訪問現(xiàn)有的ContentProvider時要指定相應的Uri,然后再通過ContentResovler對象來實現(xiàn)數(shù)據(jù)的操作。接著展示出對應的代碼,并對代碼進行解答。Uriuri=Uri.parse("content://cn.itcast.mycontentprovider/person");ContentResolverresolver=context.getContentResolver();Cursorcursor=resolver.query(uri,newString[]{"address","date", "type","body"},null,null,null);while(cursor.moveToNext()){ Stringaddress=cursor.getString(0); longdate=cursor.getLong(1); inttype=cursor.getInt(2); Stringbody=cursor.getString(3); } cursor.close();老師結(jié)合教材和PPT,對訪問內(nèi)容提供者代碼進行詳細的講解,要求學生熟練掌握訪問內(nèi)容提供者的方法。 2、教師根據(jù)課件,講述實戰(zhàn)演練——查看系統(tǒng)短信1.創(chuàng)建程序創(chuàng)建一個名為ReadSMS的應用程序,指定包名為cn.itcast.readsms,設計用戶交互界面。2.編寫實體類接下來創(chuàng)建一個實體類SmsInfo,用于封裝短信的屬性,存儲單條短信的信息,它的成員變量為_id、date、type、body和address。3.編寫界面交互代碼在MainActivity中編寫界面交互代碼以實現(xiàn)查看系統(tǒng)短信的功能。4.添加權限該案例進行了讀取短信的操作,因此需要在AndroidMainfest.xml文件中加上讀取短信的權限。在Android8.0以上的版本中,還需要在邏輯代碼中添加申請短信權限的代碼,否則訪問不了系統(tǒng)短信數(shù)據(jù)。3、教師根據(jù)課件,講述什么是內(nèi)容觀察者老師引導,內(nèi)容觀察者ContentObserver是用來觀察指定Uri所代表的數(shù)據(jù),當觀察到指定Uri代表的數(shù)據(jù)發(fā)生變化時,就會觸發(fā)ContentObserver的onChange()方法。此時在onChange()方法里使用ContentResovler可以查詢到變化的數(shù)據(jù)。先來介紹ContentObserver中兩個常用的方法。publicvoidContentObserver(Handlerhandler):ContentObserver的派生類都需要調(diào)用該構造方法。參數(shù)可以是主線程Handler,也可以是任何Handler對象(Handler將在第10章講解)。publicvoidonChange(booleanselfChange):當觀察到的Uri代表的數(shù)據(jù)發(fā)生變化時,會觸發(fā)該方法。老師根據(jù)教材和PPT內(nèi)容,對內(nèi)容觀察者所涉及到的方法進行詳細的講解,對實現(xiàn)內(nèi)容觀察者代碼進行分析講解,要求學生熟練掌握。三、歸納總結(jié),布置課后作業(yè)1、回顧上課前的學習目標,并對本節(jié)課的重要知識點進行總結(jié)。教師提問學生本節(jié)課需要掌握的知識點,包括查詢其他程序的數(shù)據(jù)、實戰(zhàn)演練——查看系統(tǒng)短信、什么是內(nèi)容觀察者等知識,并對學生的回答進行補充和總結(jié)。2、布置隨堂練習,檢查學生掌握情況。根據(jù)博學谷和隨堂練習資源,給學生布置隨堂練習,檢測學生的掌握程度,并對學生出現(xiàn)的問題進行解決。3、使用博學谷系統(tǒng)中的測試題給學生布置作業(yè)。第四學時(實戰(zhàn)演練——監(jiān)測數(shù)據(jù)變化)一、回顧上節(jié)講解的知識,引出本節(jié)需要講解的知識1、教師對上節(jié)課留的作業(yè)進行答疑。2、回顧上節(jié)課學習的內(nèi)容,引出本節(jié)課的內(nèi)容。老師引導,上節(jié)課講解了查詢其他程序的數(shù)據(jù)、實戰(zhàn)演練——查看系統(tǒng)短信、什么是內(nèi)容觀察者,接下來我們將通過一個檢測數(shù)據(jù)變化的案例講解如何使用內(nèi)容觀察者。3、明確學習目標要求學生掌握如何實現(xiàn)檢測數(shù)據(jù)變化的案例二、重點知識講解1、教師根據(jù)課件,講述實戰(zhàn)演練——監(jiān)測數(shù)據(jù)變化老師引導,前面講解了內(nèi)容觀察者的工作原理及用法,為了大家能更好的掌握知識,下面通過一個檢測數(shù)據(jù)的案例來鞏固一下知識。1. 創(chuàng)建程序創(chuàng)建一個名為ContentObserverDB的程序,指定包名為cn.itcast.contentobserverdb,設計用戶交互界面。2. 創(chuàng)建數(shù)據(jù)庫幫助類由于本案例要通過內(nèi)容提供者來暴露數(shù)據(jù)庫中的數(shù)據(jù),因此要在應用程序中創(chuàng)建一個數(shù)據(jù)庫幫助類PersonDBOpenHelper,用于創(chuàng)建數(shù)據(jù)庫及數(shù)據(jù)表。3. 創(chuàng)建內(nèi)容提供者接下來創(chuàng)建一個ContentProvider類,指定名稱為PersonProvider,用于實現(xiàn)暴露數(shù)據(jù)庫程序的功能。4. 編寫界面交互代碼數(shù)據(jù)庫與ContentProvider都已經(jīng)創(chuàng)建完成,接下來需要在MainActivity中使用ContentResolver的相關方法來操作數(shù)據(jù)。至此,操作數(shù)據(jù)庫的程序就創(chuàng)建完成了,接下來創(chuàng)建監(jiān)測數(shù)據(jù)庫變化的程序。1. 創(chuàng)建程序創(chuàng)建一個名為MonitorData的程序,指定包名為cn.itcast.monitordata,只需要監(jiān)測對數(shù)據(jù)庫的操作,因此不需要有主界面,使用默認界面即可。初學者只需在MainActivity里面注冊內(nèi)容觀察者,監(jiān)測數(shù)據(jù)庫應用中的數(shù)據(jù)是否發(fā)生變化。2. 運行程序首先運行MonitorData應用,再運行ContentObserverDB程序,可以看到成功創(chuàng)建了person.db數(shù)據(jù)庫。老師根據(jù)教材和PPT內(nèi)容,向?qū)W生詳細講解內(nèi)容觀察者代碼的實現(xiàn)過程,要求學生熟練掌握如何通過內(nèi)容觀察者觀察數(shù)據(jù)的變化。三、歸納總結(jié),布置課后作業(yè)1、回顧上課前的學習目標,并對本節(jié)課的重要知識點進行總結(jié)。教師提問學生本節(jié)課需要掌握的如何實現(xiàn)檢測數(shù)據(jù)變化的案例中包含的知識點,并對學生的回答進行補充和總結(jié)。2、布置隨堂練習,檢查學生掌握情況。根據(jù)博學谷和隨堂練習資源,給學生布置隨堂練習,檢測學生的掌握程度,并對學生出現(xiàn)的問題進行解決。3、使用博學谷系統(tǒng)中的測試題給學生布置作業(yè)。第五、六學時(上機練習)上機練習主要針對本章中需要重點掌握的知識點,以及在程序中容易出錯

溫馨提示

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

評論

0/150

提交評論