- 1、本文档共19页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
十九、ContentProvider与资料共享
Android系統雖然可以同時執行多個應用程式,但各應用程式是各自獨立的,不但有自己的處理程序,同時也具有自己特定的資料儲存空間,而這空間內的資料是完全私有的,其他應用程式無法使用。 這樣設計的好處是安全,資料完全由自己管理,避免資料誤用與損壞的機會,但也造成因為應用程式無法共享資料,降低了資料重覆使用的彈性。 為了解決這個問題,Android SDK提供了「Content Provider」的概念;Content Provider就如同應用程式資料之間的橋樑,讓應用程式可以透過這座橋樑共享資料,不過橋樑的通行權卻仍在我們手中控制,使應用程式之間有共享資料的彈性,但也仍然為資料提供了適當的保護。 內容提供者(Content Provider)是Android SDK提供的一個抽象類別,可用以保存及管理資料,更是應用程式之間共享資料的唯一方法。 非資料擁有者的應用程式要從Content Provider存取資料,必須透過「ContentResolver」物件,此物件就如同Content Provider的客戶;ContentResolver對Content Provider的實體提出需求,Content Provider依需求執行必要的動作並回傳動作的結果。 「ContentResolver」物件具有處理資料「CRUD」 (Create:建立、Retrieve:讀取、Update:更新、Delete:刪除)的方法,這些方法會呼叫Content Provider實體物件中的同名方法。 重要的CRUD方法定義如下: 查詢:public final Cursor query (Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) 更新:public final int update (Uri uri, ContentValues values, String selection, String[] selectionArgs) 新增:public final Uri insert (Uri url, ContentValues values) 刪除:public final int delete (Uri url, String selection, String[] selectionArgs) 前面方法定義中,第一個參數都是Uri物件類型的參數,這參數主要是用來識別內容提供者內部資料,它由3個部分組成:以「content://」開始的起始部分;後面接著provider套件名稱,稱為授權(authority);最後為可選擇部分的資料類型與記錄的識別碼(ID)。 要provider提供資料,請求的應用程式必須先在自己的AndroidManifest.xml組態檔申請此provider的使用許可(uses-permission)。如果只是要讀取資料,申請provider的讀取使用許可即可;如果會變動資料(更新、新增與刪除),則還需要申請provider的寫入使用許可。 聯絡簿是個相當複雜的SQLite資料庫,內含有3個資料表: ContactsContract.Contacts資料表:其中每一筆記錄(即一列)相當於一位聯絡人的資料。 ContactsContract.RawContacts資料表:每一筆記錄相當於一位聯絡人的資料摘要,特別是使用者帳號與類型。 ContactsContract.Data資料表:每一筆記錄為聯絡人原始資料的細節,如Email、電話等。 在模擬器(或實際Android裝置上) 為連絡簿增加連絡人資料,請依以下步驟進行: 啟動模擬器。 敲Home螢幕下方的「Contacts」(聯絡簿)圖示。 載入聯絡簿資料庫,此資料庫初始狀態為空的,在開啟的畫面中有3個按鈕分別執行:新增聯絡人、登入帳號、匯入聯絡簿等工作,利用第1個按鈕為聯絡簿增加4筆聯絡人記錄。 敲「Create a new contact」鈕,出現訊息通知因為無帳號,此聯絡簿將無法備份,詢問是否要增加帳號?因為只是要以此聯絡簿資料庫進行練習Content Provider,因此請選「Keep local」鈕。 輸入聯絡人姓名,然後敲返回鈕將資料儲存。 按螢幕右下角增加記錄圖示,繼續增加另外3筆 記錄,記錄內容為「Chen」、「Len」、「Hang」、「Dan」。 ContactProvider Test範例 範例將提供2個主要按鈕「Query」與「Insert」。 按下「Query」按鈕,會顯示聯絡人姓名,並提供另一個「Next」按鈕,讓使用者可以透過此鈕逐筆顯示其他聯絡人姓名。 按下「Insert」按鈕,程式將以目前畫面上的姓名新
文档评论(0)