想要實現跨程式共享資料需要用到內容提供器,內容提供器給別的應用提供了訪問介面,可以新建乙個類去繼承contentprovider來建立乙個自己的內容提供器。contentprovider類中有6種抽象方法,在使用子類繼承的時候需要全部重寫。
1乙個標準的內容uri寫法是這樣的:public
class myprovider extends
contentprovider
1213
/*14
查詢資料
15uri 確定查詢的是那一張表
16projection 查詢那一列
17selection 和 selectionargs查詢那些行
18sortorder 對結果進行排序
19返回的資料存放在cursor物件中
20*/
21@override
22public
cursor query(uri uri, string projection, string selection, string selectionargs, string sortorder)
2526
/*27
根據傳入的資料uri來返回相應的mime型別
28*/
29@override
30public
string gettype(uri uri)
33/*
34新增資料
35uri 確定新增的是那一張表
36values 儲存待新增的資料
37返回一條表示這條新記錄的uri
38*/
39@override
40public
uri insert(uri uri, contentvalues values)
43/*
44刪除資料
45selection 和 selectionargs 刪除那些行
46返回被刪除的行數
47*/
48@override
49public
intdelete(uri uri, string selection, string selectionargs)
52/*
53更新已有的資料
54uri 確定更新的是那一張表
55values 新資料
56selection 和 selectionargs 更新那些行
57會返回更新的行數
58*/
59@override
60public
intupdate(uri uri, contentvalues values, string selection, string selectionargs)
6364 }
其中 * 表示任意長度的任意字元 # 表示任意長度的數字
然後使用urimatcher這個類實現匹配內容uri的功能,urimatcher中有乙個adduri()的方法,3個引數,可以分別把authority、path、和乙個自定義**,當呼叫urimatcher的match()方法是,將乙個uri傳入,返回值某個能夠匹配這個uri的自定義**。
修改後的**:
1insert()、update()、delete()也可以使用switch (urimatcher.match(uri))這樣的判斷語句判斷出希望訪問的是那張表,再進行相應的操作public
class myprovider extends
contentprovider
24...
25/*
26查詢資料
27uri 確定查詢的是那一張表
28projection 查詢那一列
29selection 和 selectionargs查詢那些行
30sortorder 對結果進行排序
31返回的資料存放在cursor物件中
32*/
33@override
34public
cursor query(uri uri, string projection, string selection, string selectionargs, string sortorder)
53...54}
5556
...57
58 }
gettype()方法是乙個所有的內容提供器都必須提供的乙個方法,用於獲取uri物件所對應的mime型別。
乙個內容uri所對應的mime字串主要由3部分組成,android的格式規定是:
1、必須以vnd開頭
2、如果內容uri以路徑結尾,則後接android.cursor.dir/,如果內容uri以id結尾,則後接android.cursor.item/
3、最後接上vnd..
實現gettype()方法的邏輯如下:
publicclass myprovider extends
contentprovider
return
null
; }
}
跨程式共享資料
可以利用getcontentresolver 獲取contentresolver.contentresolver中提供了一系列方法用於對資料進行crud操作.通過getcontentresolver 獲取contentresolver的例項,contentresolver中提供了一系列方法用於對資料...
跨應用程式的session共享
常常有這樣的情況,乙個大專案被分割成若干小專案開發,為了能夠互不干擾,要求每個小專案作為乙個單獨的web應用程式開發,可是到了最後突然發現某幾個小專案之間需要共享一些資訊,或者想使用session來實現sso single sign on 在session中儲存login的使用者資訊,最自然的要求是...
跨域共享cookie和跨域共享session
的父網域名稱.cookie4可以被提交,因為domain和cookie都嚴格保持一致.這裡需要注意的是,在瀏覽器看來.www.vinceruan.info不是blog.vinceruan.info 的父網域名稱,而vinceruan.info才是blog.vinceruan.info的父網域名稱,w...