內容提供者ContentProvider的使用:
1、需要暴露數據的應用程序中要寫一個類來繼承ContentProvider類,重寫裏面的增刪改查來調用應用程序裏面的數據庫。
2、這個類中需要來匹配訪問本內容的程序傳遞過來的Uri來判斷是否符合要求,利用new UriMatcher(設置如果沒有匹配返回的默認值),對象調用add(authorities:清單文件中的主機名,口令,匹配成功後的返回值)來添加要相匹配的uri對象,調用match(uri對象);來判斷是否匹配成功
example:
UriMatch urimatch = new Urimatch(UriMatch.NO_MATCH);
static{
urimatch.addUri("com.example.contentprovider.GIVEITOUT" ,
"xiaojidunmogu" , SUCESS);
}
urimatch.match();
3、在每個增刪改查的方法中都進行匹配判斷,再執行數據庫操作,
調用方法unbind解除綁定後,中間人的服務方法調用還能用,因爲服務雖然被destroy了,但還沒被回收。
遠程服務的程序清單配置中的Intent-filter 中不用添加 category節點,(添加也不會報錯,可以運行)
PS:
繼承ContentProvider類重寫Query方法的時候,需要返回Cursor的對象值,在返回對象之前不能關閉cursor或者SQliteDatabase的對象;否則報出異常08-11 13:26:00.868: E/DatabaseUtils(17370): java.lang.IllegalStateException: attempt to re-open an already-closed object: