天天看點

【Android基礎】内容提供者ContentProvider的使用詳解1.什麼是ContentProvider2.如何定義一個ContentProvider3.外部應用如何使用我們的ContentProvider

首先,ContentProvider(内容提供者)是android中的四大元件之一,但是在一般的開發中,可能使用的比較少。

ContentProvider為不同的軟體之間資料共享,提供統一的接口。也就是說,如果我們想讓其他的應用使用我們自己程式内的資料,就可以使用ContentProvider定義一個對外開放的接口,進而使得其他的應用可以使用咱們應用的檔案、資料庫記憶體儲的資訊。當然,自己開發的應用需要給其他應用共享資訊的需求可能比較少見,但是在Android系統中,很多系統自帶應用,比如聯系人資訊,圖檔庫,音頻庫等應用,為了對其他應用暴露資料,是以就使用了ContentProvider機制。是以,我們還是要學習ContentProvider的基本使用,在遇到擷取聯系人資訊,圖檔庫,音頻庫等需求的時候,才能更好的實作功能

Android系統為了讓我們更好的對外暴露資料,提供了統一的接口,是以定義了抽象類ContentProvider,是以,如果我們想對外提供資料,我們需要繼承ContentProvider,并且實作下面的這幾個方法:

onCreate()

當我們的provider初始化時被調用,我們應該在這個方法裡面完成部分初始化操作

query() 查詢方法,用于給調用者傳回資料

insert() 插入操作,用于讓外部應用插入資料到内容提供者中

update() 更新操作,用于更新内容提供者的資料

delete() 用于删除資料

getType 傳回内容提供者的MIME Type

上面這些方法,當我們繼承自ContentProvider的時候,eclipse會自動的給我們添加,但是這并不代表我們每個方法都需要自定義實作。如果我們隻希望給其他應用提供資料,而不允許其他應用修改我們的資料,那麼我們隻需要實作onCreate(),getType()和query()這三個方法就可以了,其他的三個方法我們可以根據業務需求,實作或者是不實作。

因為一般使用ContentProvider向外部暴露資料庫的資訊,是以,本篇将以使用ContentProvider向其他應用暴露資料庫資訊為例,講解ContentProvider的基本使用。

Android中SQLite資料庫的建立和使用,本篇不再介紹,不清楚的請看這篇文章

假設讀者已經學會了SQLite資料庫的使用,并且已經建立好了資料庫,下面我們開始寫我們的ContentProvider。

因為注釋解析的比較詳細,是以就不過多解釋了

我們在定義好我們的ContentProvider之後,因為ContentProvider資料四大元件之一,是以我們還需要在AndroidManifest清單檔案中進行注冊才能使用,下面是注冊資訊

注意,provider的聲明和activity一樣,都是在application節點進行聲明的。

至此,我們就完成了我們自己的ContentProvider的生命,其他的應用現在就可以使用我們往外部暴露的資料資訊了。

我們已經定義好了我們自己的ContentProvider,那麼外部應用如何調用呢?

下面,我将建立一個測試單元工程,完成對ContentProvider的各個方法的測試

添加方法測試

删除方法測試

修改方法測試

上面的方法都經過了單元測試。

好了,至此,我們就使用ContentProvider實作了在第三方應用中對我們應用的資料庫進行增删改查等操作,如有疑問,請留言。

繼續閱讀