內容提供者

2021-08-21 17:46:47 字數 1538 閱讀 5584

把自己應用程式私有的資料,暴露給別的應用程式

1、在資料應用程式裡面開乙個「後門」寫乙個類繼承contentprovider

mydbcontentprovider extends contentprovider
2、內容提供者實現類裡面預設定義了增刪改查的4個方法

query --->uri

insert--->uri

delete--->uri

update--->uri

3、定義乙個匹配器(保安)

private static urimatcher murimatcher = new

urimatcher(urimatcher.no_match);

//如果匹配失敗返回-1

4、訓練匹配器(訓練保安)

static//新增匹配規則
5、在清單檔案中配置內容提供者

1、獲取內容提供者的解析器

contentresolver resolver = getcontentresolver();

2、利用解析器訪問私有的資料庫

resolver.query(uri uri ,...);

resolver.insert(uri uri ,...);

resolver.delete(uri uri ,...);

resolver.update(uri uri ,...);

注意:uri必須指定正確,如果uri錯誤,訪問就會失敗.

com.android.provider.contacts

contacts2.db

com.android.provider.telephony

mmssms.db

三張表

* raw_contacts

儲存聯絡人的id,每乙個聯絡人都有乙個不同的id,名字叫contact_id

查詢raw_contacts表, 把每個聯絡人的contact_id.

根據contact_id 查詢data表,把聯絡人的資料取出來.

根據聯絡人資料的mimetype,獲取資料代表什麼含義.

在raw_contacts表裡面新增聯絡人的id.

根據這個新增的id,在data表裡面新增聯絡人的資料

contentresolver resolver = getcontentresolver();

// 簡訊資料庫表的uri

uri uri = uri.parse("content://sms/");

//註冊乙個內容觀察者

resolver.registercontentobserver(uri, true, new myobserver(

new handler()));

內容提供者

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...