內容提供器提供了兩種方法,一種是使用現有的內容提供器來讀取和操作相應的程式中的資料,另一種是建立自己的內容提供器給我們的程式資料提供外部訪問介面。接下來就從使用現有的內容提供器開始。
什麼是現有的內容提供器呢?其實就是我們手機上使用系統自帶的**薄,簡訊,**庫等程式。它們提供了類似的訪問介面,這就使得第三方應用程式可以充分的使用這部分資料來實現更好的功能。下面就來實踐一下,內容提供器是如何使用的!
2.1)contentresolver的基本用法
如果要使用內容提供器中共享資料,就要使用contentresolve類,可以通過context中的getcontentresolve()方法獲取到該類的例項。跟sqlite有點類似,contentresolve中提供了一系列的方法用於對資料的curd操作,其中insert()方法用於新增資料,update()用於更新資料,delete()方法用於刪除資料,query()方法用於查詢資料。但是在方法上稍微有點區別。
首先是contentresolve中增刪改查方法都是不接受表明引數的,而是使用乙個uri引數代替,這個引數被稱為uri。內容uri給內容提供器中的資料建立了唯一的識別符號,主要由authority和path.authority是用於對不同的應用程式做區分的,為了避免衝突都會採用程式包名的方式來命名,例如:content:則是對不同的表進行區分的,通常新增到authority的後面。例如資料庫裡存在兩張表:table1和table2這時候就可以將path分別命名為 /table1和/table2,然後將authority和path進行組合,內容url就變成了 content:和content:不過目前目前還很難辯認出這兩個字元就是兩個內容的url,我們還需要在字串的頭部加上協議宣告,因此,內容uri最標準的格式寫法。因此標準寫法為:content://content:
content://content:
在得到了內容url字元之後,我們還需要將它解析成uri物件才可以作為引數傳入。解析的方法如下:
uri uri = uri.parse(「content://content:」);然後再呼叫uri.parse()方法,就可以將內容uri字串解析成uri物件。現在我們就可以使用這個物件來查詢table1表中的資料了,**如下所示:
cursor cursor = getcontentresolver().query(
uri,
projection,
selection,
selectionargs,
sortorder);
總體程式跟sqlitedatabase中的·query()方法裡的引數很像,但總體來說比較簡單一些,畢竟是在訪問其他程式,沒必要過於複雜的查詢語句。下表就是對著使用的引數進行了詳細的解釋。
查詢完之後返回的仍然是乙個cursor物件,這個時候我們就可以將資料從cursor物件中逐個取出來。讀取的方法就是通過移動游標的位置來遍歷cursor所有行,然後再取出每一行中相應的資料**如下所示:
if( cursor != null)
cursor.close();
}掌握了最難的查詢操作,剩下的增加、修改、刪除操作就更不在話下了。 例如向table1表中新增一條資料:
contentvalues values = new contentvalues();
values.put("column1","text");
values.put("column2",1);
getcontentresolver().insert(uri,values);
**分析:首先是將待新增的資料組裝到contentvalues中,然後呼叫contentresolver的insert()方法,將uri和contentvalues作為引數傳入即可。
接著我們來更新這條新新增資料,把column1的值清空,可以借助contentresolver的update()方法實現。**如下所示:
contentvalues values = new contentvalues();
values.put("column1","");
getcontentresolver().update(uri,values,"column1 = ? and column2 = ?",new string);
**分析:跟新增資料一樣的操作,不過上述**使用了selection和selectionarg引數來對想要更新的資料進行約束,以防止所有的行為都會受影響。
最後呼叫contentresolver()的delete()方法方法將這個資料刪除掉,**如下所示
getcontentresolver().delete(uri,"column2 = ?",new string);
安卓開發 四大元件之內容提供器
內容提供器使資料在不同的程式中實現共享 分類 現有的內容提供器,自定義的內容伺服器 對於每個程式來說,如果想要訪問內容提供器中的資料,一定要借助contentresolver類,可以通過context中的getcontentresolver方法得到該類的例項。contentresolver中提供了一...
安卓四大元件 內容提供器 2 訪問其他程式中的資料
內容提供器提供了兩種方法,一種是使用現有的內容提供器來讀取和操作相應的程式中的資料,另一種是建立自己的內容提供器給我們的程式資料提供外部訪問介面。接下來就從使用現有的內容提供器開始。什麼是現有的內容提供器呢?其實就是我們手機上使用系統自帶的 薄,簡訊,庫等程式。它們提供了類似的訪問介面,這就使得第三...
安卓四大元件複習
android四大基本元件介紹與生命週期 android四大基本元件分別是activity,service服務,content provider內容提供者,broadcastreceiver廣播接收器。一 了解四大基本元件 activity 應用程式中,乙個activity通常就是乙個單獨的螢幕,它...