在不同應用之間實現資料共享,並保證安全性比較:」新增」沒有條件約束,」刪除」沒有資料contentvalues
getcontentresolver().insert(uri uri, contentvalues values)
getcontentresolver().update(uri uri, contentvalues values, string where, string selectionargs)
getcontentresolver().delete(uri uri, string where, string selectionargs)
cursor = getcontentresolver().query(contactscontract.commondatakinds
.phone
.content_uri,null, null, null, null);
while (cursor.movetonext())
//加入許可權
android.permission
.read_contacts
oncreate()public
class
myprovider
extends
contentprovider
@override
public cursor query(uri uri, string projection, string selection,
string selectionargs, string sortorder)
@override
public uri insert(uri uri, contentvalues values)
@override
public
intupdate(uri uri, contentvalues values, string selection,string selectionargs)
@override
public
intdelete(uri uri, string selection, string selectionargs)
@override
public string gettype(uri uri)
}
初始化內容提供器的時候呼叫。通常會在這裡完成對資料庫的建立和公升級等操作,
返回 true 表示內容提供器初始化成功,返回 false 則表示失敗。注意,只有當存在
contentresolver 嘗試訪問我們程式中的資料時,內容提供器才會被初始化。
query()
從內容提供器中查詢資料。使用 uri 引數來確定查詢哪張表,projection 引數用於確
定查詢哪些列,selection 和 selectionargs 引數用於約束查詢哪些行,sortorder 引數用於
對結果進行排序,查詢的結果存放在 cursor 物件中返回。
insert()
向內容提供器中新增一條資料。使用 uri 引數來確定要新增到的表,待新增的資料
儲存在 values 引數中。新增完成後,返回乙個用於表示這條新記錄的 uri。
update()
更新內容提供器中已有的資料。使用 uri 引數來確定更新哪一張表中的資料,新數
據儲存在 values 引數中,selection 和 selectionargs 引數用於約束更新哪些行,受影響的
行數將作為返回值返回。
delete()
從內容提供器中刪除資料。使用 uri 引數來確定刪除哪一張表中的資料,selection
和 selectionargs 引數用於約束刪除哪些行,被刪除的行數將作為返回值返回。
gettype()
根據傳入的內容 uri 來返回相應的 mime 型別。
在路徑後加入id可以訪問到具體的行
內容 uri 的格式主要就只有以上兩種,以路徑結尾就表示期望訪問該表中所有的資料,uri要判斷兩種情況:以 id 結尾就表示期望訪問該表中擁有相應 id 的資料。可以使用萬用字元的方式來分別匹
配這兩種格式的內容 uri,這就是內容uri模式
使用urimatcher
方法 adduri() 會將許可權和路徑對映到乙個整型值。 方法 match() 會返回 uri 的整型值
public
class
myprovider
extends
contentprovider
…… @override
public cursor query(uri uri, string projection, string selection,
string selectionargs, string sortorder)
……}
contentprovider中抽象方法string gettype(uri uri),用來獲取mime型別乙個內容 uri 所對應的 mime字串主要由三部分組分:1. 必須以 vnd 開頭。
2. 如果內容 uri 以路徑結尾,則後接 android.cursor.dir/,如果內容 uri 以 id 結尾,
則後接 android.cursor.item/。
3. 最後接上 vnd.< authority >.< path >
一般都形如:示例:vnd.android.cursor./vnd.< authority >.< path >
查表中所有內容
查確定的行
**示例
@override
public string gettype(uri uri)
return
null;
}
// 指定該類的全名
android:name="com.example.databasetest.databaseprovider"
//指定內容提供器的許可權
android:authorities="com.example.databasetest.provider"
//是否可以被其他程式訪問
android:exported="true">
如何新增Content Provider
一 寫在前面 一直很好奇系統是如何通過 content 來訪問歸屬地資料庫的,通過研究 和api參考文件以及網路上的資料基本上弄明白了,於是有了以下的內容。二 android content provider介紹 三 content provider的組成 四 新增content provider ...
ContentProvider簡單使用
一是使用內容提供器讀取和操作其他應用程式的資料 二是建立內容提供器給該程式的資料提供外部訪問介面 如 簿,簡訊,庫,都有內容提供器讓它們的資料有外部訪問介面 內容提供器提供的資料外部訪問介面是乙個uri.它由authority和path組成 path相當於不同的表加在authority的後面。如有表...
使用ContentProvider共享資料
當應用繼承contentprovider類,並重寫該類用於提供資料和儲存資料的方法,就可以向其他應用共享其資料。以前我們學習過檔案的操作模式,通過指定檔案的操作模式為context.mode world readable 或context.mode world writeable同樣可以對外共享資料...