編輯:Android開發教程
Content Provider 屬於Android應用程序的組件之一,作為應用程序之間唯一的共享數據的途徑,Content Provider 主要的功能就是存儲並檢索數據以及向其他應用程序提供訪問數據的借口。
Android 系統 為一些常見的數據類型(如音樂、視頻、圖像、手機通信錄聯系人信息等)內置了一系列的 Content Provider, 這些都位於android.provider包下。持有特定的許可,可以在自己開發的應用程序中訪問這些Content Provider。
讓自己的數據和其他應用程序共享有兩種方式:創建自己的Content Provier(即繼承自 ContentProvider的子類) 或者是將自己的數據添加到已有的Content Provider中去,後者需要保證現 有的Content Provider和自己的數據類型相同且具有該 Content Provider的寫入權限。對於Content Provider,最重要的就是數據模型(data model) 和 URI。
1.數據模型
Content Provider 將其存儲的 數據以數據表的形式提供給訪問者,在數據表中每一行為一條記錄,每一列為具有特定類型和意義的數據。每 一條數據記錄都包括一個 "_ID" 數值字段,改字段唯一標識一條數據。
2.URI
URI, 每一個Content Provider 都對外提供一個能夠唯一標識自己數據集(data set)的公開URI, 如果一個Content Provider管理多個數據集,其將會為每個數據集分配一個獨立的URI。所有的Content Provider 的URI 都以 "content://" 開頭,其中"content:"是用來標識數據是由Content Provider管理的 schema。
在幾乎所有的Content Provider 的操作中都會用到URI,因此一般來講,如果是自己開發的 Content Provider,最好將URI定義為常量,這樣在簡化開發的同時也提高了代碼的可維護性。
首先 來介紹如何訪問Content Provider中的數據,訪問 Content Provider中的數據主要通過ContentResolver對象 ,ContentResolver類提供了成員方法可以用來對Content Provider 中的數據進行查詢、插入、修改和刪除等 操作。 以查詢為例,查詢一個 Content Provider 需要掌握如下的信息。
唯一標識Content Provider 的URI
需要訪問的數據字段名稱。
該數據字段的數據類型
提示: 如果需要訪問特 定的某條數據記錄,只需該記錄的ID 即可。
查詢Content Provider的方法有兩個:ContentResolver 的query() 和 Activity 對象的 managedQuery(),二者接收的參數均相同,返回的都是Cursor 對象,唯一不 同的是 使用managedQuery 方法可以讓Activity 來管理 Cursor 的生命周期。
被管理的Cursor 會在 Activity進入暫停狀態的時候調用自己的 deactivate 方法自行卸載,而在Activity回到運行狀態時會調用自 己的requery 方法重新查詢生成的Cursor對象。如果一個未被管理的Cursor對象想被Activity管理,可以調用 Activity的 startManagingCursor方法來實現。
Android應用程序可以使用文件或SqlLite數據庫來存 儲數據。Content Provider提供了一種多應用間數據共享的方式,比如:聯系人信息可以被多個應用程序訪問 。Content Provider是個實現了一組用於提供其他應用程序存取數據的標准方法的類。
應用程序可以 在Content Provider中執行如下操作:
查詢數據
修改數據
添加數據
刪除數據
Android 提供了多種存儲數據的方法,其中最簡單的是使用Shared Preferences. Shared Preferences 可以存儲 Key/value 對
構建移動應用程序和構建 Web 應用程序一樣,要時刻牢記最終目標(和用戶)。始終了解您的應用程序可 以給用戶帶來哪些利益。您的應用程序將顯示哪些類型的信息,擁有哪些功能
在上一節中,菜單選項是沒有文字的。如果想要同時顯示圖標和文字,可以一起使用“|”和 MenuItem.SHOW_AS_ACTION_WITH_TE
如果想要添加OpenCV的依賴庫, 則需要把OpenCV的"D:\OpenCV-2.4.9-android-sdk\sdk\java"文件夾復制到An