內容提供者 ContentProvider

2021-07-31 06:08:45 字數 2848 閱讀 6425

她是用來為其他應用程式暴露資料,並且提供資料操作方法的乙個類,就比如說是手機自帶的通訊錄,簡訊等這些應用都用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...