
華聯(lián)學院《android軟件開發(fā)》課件07跨程序共享數(shù)據(jù)--探究內(nèi)容提供器
9頁第七章跨程序共享數(shù)據(jù)-探究內(nèi)容提供器Android軟件開發(fā)主講:王海本章目標了解ContentProvider類和ContentResovler類能夠開發(fā)ContentProvider程序能夠操作系統(tǒng)的ContentProviderAndroid軟件開發(fā)主講:王海ContentProvider類ContentProvider是Android應(yīng)用的四大組件之一用于存儲、檢索數(shù)據(jù),并向應(yīng)用程序提供訪問數(shù)據(jù)的接口方法方法功能描述功能描述public abstract boolean onCreate()創(chuàng)建ContentProviderh后會被調(diào)用public abstract Uri insert(Uri uri,ContentValues values) 根據(jù)Uri插入values對應(yīng)的數(shù)據(jù)public abstract int delete(Uri uri,Stringselection,String selectionArgs)根據(jù)Uri刪除selection條件所匹配的全部記錄public abstract int update(Uri uri,ContentValuesvalues,String selection,String selectionArgs)根據(jù)Uri修改selection條件所匹配的全部記錄public abstract Cursor query(Uri uri,String projection,String selection,String selectionArgs,String sortOrder)根據(jù)Uri查詢selection條件所匹配的全部記錄,其中projection是一個列名列表,表明只選出指定的數(shù)據(jù)列public abstract String getType(Uri uri)獲得當前Uri所代表的MIME數(shù)據(jù)類型public final Context getContext()獲得Context對象Android軟件開發(fā)主講:王海UriUri是ContentProvider對外提供一個自身數(shù)據(jù)集的唯一標識【語法】 “content:/”是ContentProvider規(guī)定的協(xié)議,用來標識ContentProvider所管理的schema;所有的Uri都以“content:/”開頭; “數(shù)據(jù)路徑”用于查找所要操作的ContentProvider; “標識ID”是可選的,標識不同數(shù)據(jù)資源,當訪問不同資源時,該ID是動態(tài)改變的。
【示例】返回設(shè)備中存儲的所有圖片的Uricontent:/數(shù)據(jù)路徑/標識ID(可選)content:/media/internal/imagesAndroid軟件開發(fā)主講:王海ContentResolver類ContentResolver是內(nèi)容解析器,提供了對ContentProvider數(shù)據(jù)進行查詢、插入、修改和刪除等操作的方法方法功能描述insert(Uri uri,ContentValues values)向Uri對應(yīng)的ContentProvide中插入values對應(yīng)的數(shù)據(jù)delete(Uri uri,String where,String selectionArgs)刪除Uri對應(yīng)的ContentProvide中where匹配的數(shù)據(jù)update(Uri uri,ContentValues values,String where,String selectionArgs)更新Uri對應(yīng)的ContentProvide中where匹配的數(shù)據(jù)query(Uri uri,String projection,String selection,String selectionArgs,String sortOder)查詢Uri對應(yīng)的ContentProvide中where匹配的數(shù)據(jù)Android軟件開發(fā)主講:王海開發(fā)ContentProvider程序步驟 創(chuàng)建一個ContentProvider子類,并實現(xiàn)query()、insert()、update()和delete()等方法; 在AndroidManifest.xml配置文件中注冊ContentProvider,并指定android:authorities屬性; 使用ContentProvider。
Activity和Service等組件都可以獲取ContentProvider對象,并調(diào)用該對象相應(yīng)的方法進行操作Android軟件開發(fā)主講:王海管理聯(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的UriAndroid軟件開發(fā)主講:王海管理多媒體Android提供了Camera API來支持拍照、拍攝視頻多媒體ContentProvider的Uri: MediaStore.Audio.Media.EXTERNAL_CONTENT_URI:存儲在外部SD存儲卡中的音頻文件的Uri MediaStore.Audio.Media.INTERNAL_CONTENT_URI:存儲在手機內(nèi)存中的音頻文件的Uri MediaStore.Images.Media.EXTERNAL_CONTENT_URI:存儲在外部SD存儲卡中的圖片文件的Uri MediaStore.Images.Media.INTERNAL_CONTENT_URI:存儲在手機內(nèi)存中的圖片文件的Uri MediaStore.Video.Media.EXTERNAL_CONTENT_URI:存儲在外部SD存儲卡中的視頻文件的Uri MediaStore.Video.Media. INTERNAL_CONTENT_URI:存儲在手機內(nèi)存中的視頻文件的UriAndroid軟件開發(fā)主講:王海本章總結(jié)ContentProvider是Android應(yīng)用的四大組件之一ContentProvider類提供了insert()、delete()、update()、query()和getType()等操作數(shù)據(jù)的抽象方法Uri是每一個ContentProvider都對外提供一個自身數(shù)據(jù)集的唯一標識在開發(fā)過程中通過ContentResolver來間接操作ContentProvider所提供的數(shù)據(jù)每個應(yīng)用程序的上下文都有一個默認的ContentResolver實例對象,可以調(diào)用getContentResolver()方法獲取ContentResolver實例對象。