如何建立自己的contentprovider

2021-08-31 02:20:32 字數 2223 閱讀 2676

如何建立自己的contentprovider

作為androidl四大元件(compenent:activity, service, breadcasereceiver,

contentprovider)之一的content provider,為其它應用程式(也可以是提供該

content provider的應用程式)提供了乙個介面一致資料儲存模型。通過該介面,你可以

方便地提取你想要的資料,修改或者是刪除都會變得相當方便。依照androi元件模型的原理,

把資料儲存與資料顯示分離天來,這不但提高了元件重用性,也同時提供更高的完全性(每一

個content provider都有自己的許可屬性)。作為資料儲存的後端,你可以使用有sqlite3

儲存資料,也可以使用檔案系統儲存,甚至是使用網路;後端的多樣性給得程式的設計更富有

彈性。今天結合自己開發的經驗,總結一下實現content provider的幾點經驗,不足之處,歡迎

討論([email protected])

每乙個實現都在從contentprovider類繼承,並實現contentprovider的抽象函式:

delete(), insert(), query(), update(), gettype()和oncreate().

**片斷: class mycontentprovider extends contentprovider {

//刪除符合指定條件的記錄

public int delete(uri uri, string selection, string selectionargs);

//插入乙個新的記錄

public uri insert(uri uri, contentvalues values);

// 查詢符合指定條件的記錄

public cursor query(uri uri, string projecttion, string selection, string selectionargs, string sortorder);

//更新條例指定條件的記錄

public int update(uri uri, contentvalues values, string selection, string selectionargs);

//基於給定uri,返回該uri表示的型別

public string gettype(uri uri);

//建立資料儲存後端,如資料庫,檔案,網路介面等

public boolean oncreate();

......

}複製**如果使用sqlite3作為資料後端(本例只討論這種情況,如使用其它方法,如檔案系統,網路,則大同小異),資料庫的建立,

**片斷: class youtdbhelper extends sqlitehelper

複製**為方便其它應用程式與該contentprovider通訊,通常我們要提供乙個公共的uri: content_uri,其它元件正是通過這一uri,

與contentprovider交流。在我們的contentprovider建立好之後,我們不直接與之打交道,而是通過android的

contentresolver進行操作。通過android系統的自動分析,會選擇乙個合適的contentprovider進行通訊。只要我們指定

我們之前定義的content_uri,就可能與之勾通了。

**片斷: cursor cursor = getcontentresolver().query(uri, projection, selection, selectionargs, sortorder);

//或者

cursor cursor = managequery(uri, null, null, null, null);

// 可以使用游標cursor獲取想要的資訊

...// 刪除

int count = getcontentresolver().delete(uri url, string where, string selectionargs);

......

複製**

對uri的說明:

uri(unified resource identifier)就是統一資源標識,指定了乙個特定的資源,遵照rfc2396規範。

一般格式為:

<scheme>://#

例如: content:

其中scheme=content 表示專為contentprovider使用。

怎麼建立dllwenjian 如何建立自己的DLL

容 ifndef dll tutorial h define dll tutorial h include ifdefined dll export define decldir declspec dllexport else define decldir declspec dllimport en...

企業如何建立自己的e Learning

網際網路與持續的員工教育訓練已成為現代企業生存的兩大支柱。在企業裡,e learning是乙個重要的組織變革工具,它使企業員工有能力運用最新的專業知識及技能將必要的組織變革專案轉成公司的附加價值。e learning的主要功能 e learning的操作步驟 在企業內部建立一整套e learning...

如何建立自己的ruby gem包

編寫乙個最簡單的例子 1.建好如下資料夾 注意 lib目錄下必須有個和你gem名字一樣的rb檔案。cd hola tree hola.gemspec lib hola.rb 2.編寫 hola.rb cat lib hola.rb class hola def self.hi puts hello ...