android四大元件之一,用於跨應用資料共享,我們自己的應用可以通過使用contentprovider機制獲取聯絡人資訊,簡訊,**庫等資訊。
不要以為只能運算元據庫資料。
用getcontentresolver().query()/insert()/update()/delete()等方法對錶進行操作;
如:獲取聯絡人名字和手機號
cursor cursor = getcontentresolver().query(contactscontract.commondatakinds.phone.content_uri,null, null, null, null);
while (cursor.movetonext())
上面的常量content_uri,display_name,number都是contactscontract.commondatakinds.phone類封裝好的。
記得宣告許可權:
建立myprovider繼承自contentprovider,重寫裡面的oncreate(),query(),insert(),delete(),update(),gettype()等方法,其他應用呼叫相應的方法即可獲得資料。
在接下去講之前先補下準備知識:
1、內容uri:在contentresolver的增刪改查的方法中都會傳入乙個uri,這是內容提供器中的資料的唯一識別符號,由許可權(authority)和路徑(path)構成,許可權一般寫包名,路徑根據業務定,當然,這樣只是為了保證唯一性,寫其他的也不會錯;
2、內容uri寫法:(1)以路徑結尾 content://包名.provider/表名(如:content:
(2)以id結尾 content://包名.provider/表名/(如:content: 表示操作table表中id為1的name欄位
);3、將內容uri解析成uri物件的方法:uri uri = uri.parse("content:");
那怎麼匹配uri呢?
可以用urimatcher,該類有乙個adduri()方法,傳入許可權、路徑和乙個自定義**,在後面呼叫urimatcher的match()方法時傳入uri時就可以判斷對哪部分內容進行操作。
gettype()用於獲取 uri 物件所對應的 mime 型別,格式如下:
1、以vnd.開頭;
2、如果內容 uri 以路徑結尾,則後接 android.cursor.dir/,如果內容 uri 以 id 結尾,則後接 android.cursor.item/。
3、加上vnd.許可權.路徑。
content:對應:vnd.android.cursor.dir/vnd.com.talentclass.talent.provider.table
content:/1對應:vnd.android.cursor.item/vnd.com.talentclass.talent.provider.table
Android內容提供者
一 為什麼需要內容提供者元件 使用內容提供者把私有的資料庫內容暴露出來 原理 1.內容提供者把資料進行封裝,然後提供出來,其他應用都是通過內容解析者來訪問 2.定義內容提供者,定義乙個類繼承contentprovider 二 實現內容提供者步驟 1.定義乙個類繼承 contentprovider 2...
android內容提供者
內容提供者 必須在清單檔案中註冊,不需要手動執行,通過內容解決者匹配對應的uri 呼叫對應內容提供者中的增刪改查方法,在內容提供者中,事先利用匹配器,匹配一些 uri,只有這些 uri才能操作該內容提供者。1 在清單檔案中註冊 provider android name com.lmj.lianxi...
Android 內容提供者
索要方 用法 contentresolver resolver getcontentresolver 獲得索要方 resolver.query uri,列陣列 條件,條件值,排序列名 uri 統一資源識別符號 uri uri uri.parse conten 字串 an highlighted bl...