她是用來為其他應用程式暴露資料,並且提供資料操作方法的乙個類,就比如說是手機自帶的通訊錄,簡訊等這些應用都用contentprovider暴漏了。
需要用到乙個urimatcher,他是幫助contentprovider解析uri的,uri是統一資源識別符號,就是類似**一樣的東西。
1.1建立乙個類(類名最好是以provider結尾)繼承contentprovider
public
class
mycontentprovider
extends
contentprovider
1.5把其他的方法實現即可(增刪改查 type)
實現的時候,先把傳過來的uri匹配一下,如果匹配成功就執行,如果不成功,就報異常
@override
public cursor query(uri uri, //是傳進來的uri
string projection,//想要查詢的列名,是string陣列型別
string selection,//查詢的條件
string selectionargs,//查詢的條件的引數
string sortorder)
else
}
如果你想訪問contentprovider的內容,那麼一定用contentresovler內容解析者,而這個怎麼獲取?不是new,而是直接從上下文get。
//獲取內容解析者
contentresolver contentresolver =getcontentresolver();
2.1運算元據,就是用contentresolver來掉內容提供者定義好的方法string
str="content:"
; uri uri = uri.parse(str);
string projection;
cursor cursor = contentresolver.query(uri,
null,
null,
null,
null);
// if (cursor!=null&&cursor.getcount()>0)
// }
搞定!!
public
class
mycontentprovider
extends
contentprovider
@override
public
boolean
oncreate()
@override
public cursor query(uri uri, //是傳進來的uri
string projection,//想要查詢的列名,是string陣列型別
string selection,//查詢的條件
string selectionargs,//查詢的條件的引數
string sortorder)
else
}@override
public string gettype(uri uri)
@override
public uri insert(uri uri, contentvalues values)
@override
public
intdelete(uri uri, string selection, string selectionargs)
@override
public
intupdate(uri uri, contentvalues values, string selection,
string selectionargs)
else
}}
資料庫:
public
class
biaogewudiopenhelper
extends
sqliteopenhelper
@override
public
void
oncreate(sqlitedatabase db)
@override
public
void
onupgrade(sqlitedatabase db, int oldversion, int newversion)
}
public
class
mainactivity
extends
activity
@override
public
void
onclick(view v)
break;
case r.id.gai:
string strs="content:";
uri urii = uri.parse(strs);
contentvalues contentvalues = new contentvalues();
contentvalues.put("hero", "項羽");
contentvalues.put("life", "5000");
contentvalues.put("type", "醬油");
contentresolver.update(urii, contentvalues, "hero=?", new string);
break;
default:
break;}}
}
參考**: 內容提供者
public class personcontentprovider extends contentprovider override public boolean oncreate 作用 判斷 傳進來的 uri 查詢的是一條資料 還是多條資料 override public string gett...
內容提供者
package com.xh.tx.utils import android.content.context import android.database.sqlite.sqlitedatabase import android.database.sqlite.sqlitedatabase.cur...
內容提供者
讀取系統簡訊,首先查詢原始碼獲得簡訊資料庫內容提供者的主機名和路徑,然後 contentresolver cr getcontentresolver cursor c cr.query uri.parse content sms new string,null,null,null while c.m...