建立乙個新的Content Provider

2021-09-05 21:28:15 字數 3166 閱讀 3666

通過擴充套件

contentprovider

類來建立乙個新的

content provider

。重寫oncreate

方法來開啟或初始化你要通過這個

provider

提供的底層資料來源。新的

content provider

的框架**如下所示:

import android.content.*;

import android.database.cursor;

import android.net.uri;

import android.database.sqlexception;

public class myprovider extends contentprovider

}你還應該暴露乙個公共的靜態變數

content_uri

,來返回這個

provider

的uri。

content uri

在provider

間必須是獨一無二的,所以,乙個好的習慣是:

uri路徑值使用包名。定義乙個

content provider uri

的通用格式是:

例如:content uri

可以表示為兩種形式。上面的

uri表示請求某型別的全部值(例如,所有專案)。

在其後追加

/,如下所示,表示請求單一記錄(例如,第

5個專案)。

支援這兩種方式來訪問你的

provider

是個很好的形式。

做到這樣最簡單的方式是使用乙個

urimatcher

。當通過

contentresolver

來訪問乙個

provider

時,配置

urimatcher

解析uri

來決定它們的形式。下面的**顯示了這一樣式的框架**:

public class myprovider extends contentprovider

// create the constants used to differentiate between the different

// uri requests.

private static final int allrows = 1;

private static final int single_row = 2;

private static final urimatcher urimatcher;

// populate the urimatcher object, where a uri ending in 『items』 will

// correspond to a request for all items, and 『items/[rowid]』

// represents a single row.

static

}你可以使用相同的技巧來暴露資料中不同子集的

uri或資料庫中不同的表的

uri。

乙個好的習慣是:在

provider

中保留列的名稱和索引,來簡化通過

cursor

提取資訊。

暴露資料來源的訪問

你可以實現

delete

、insert

、update

和query

方法來暴露與你的

content provider

的查詢和互動功能。

這些方法作為底層資料來源的通用介面,允許

android

應用程式跨越程式邊界來共享資料,而不需要為每個程式公布不同的介面。

最常見的場景是使用乙個

content provider

來訪問乙個私有的

sqlite

資料庫,但使用這些方法,你可以訪問任何資料來源(包括檔案或應用程式例項的變數)。

接下來的框架**顯示了乙個

content provider

的查詢和互動功能。注意:

urimatcher

物件用於精煉互動和查詢請求。

@override

public cursor query(uri uri,string projection,string selection,string selectionargs,string sort)

return null;

}@override

public uri insert(uri _uri, contentvalues _initialvalues)

throw new sqlexception(「failed to add new item into 「 + _uri);

}@override

public int delete(uri uri, string where, string whereargs)

}@override

public int update(uri uri, contentvalues values, string where,string whereargs) }建立

content provider

最後一步是定義標識

provider

返回資料的

mime

型別。 重寫

gettype

方法,返回乙個獨一無二的字串來描述你的資料型別。返回的型別必須包含兩種形式,一種是單一專案,另一種是所有的專案,如下所示:

❑單一專案

vnd..cursor.item/

❑所有的專案

vnd..cursor.dir/

接下來的**片段顯示了如何重寫

gettype

方法來一句傳入的

uri來返回正確的

mime

型別:

@override

public string gettype(uri _uri) }註冊

provider

一旦完成了

content provider

,你必須將其新增到應用程式的

manifest

中。使用

authorities

標籤來指定它的路徑,如下面的

xml片段所示:

vfork(建立乙個新的程序)

vfork 建立乙個新的程序 相關 函式wait,execve 標頭檔案 include 定義函式 pid t fork void 函式說明 vfork 會產生乙個新的子程序.但是vfork建立的子程序與 父程序共享 資料段,而且由vfork建立的 vfork 用法與fork 相似.但是也有區別,具...

建立乙個新的視覺介面

基本的 view 類代表乙個全空的100 100 畫素的正方形。為了改變控制項的大小和顯示更炫的視覺效果,最具代表的,你需要重寫 onmeasure 和ondraw 方法。在 onmeasure 方法裡,新的 view 會依據給的邊界條件來計算它要佔據的高度和寬度。在 ondraw 方法裡,通過在畫...

VC如何建立乙個新的執行緒

使用mfc開發是較普遍的vc 程式設計方法。在vc 6.0下,mfc應用程式的執行緒由cwinthread物件表示。vc 把執行緒分為兩種 使用者介面執行緒和工作者執行緒。使用者介面執行緒能夠提供介面和使用者互動,通常用於處理使用者輸入並相應各種事件和訊息 而工作者執行緒主要用來處理程式的後台任務。...