四大元件(四) content provider

2021-07-06 04:52:32 字數 1791 閱讀 2225

content provider相當於是程式與程式之間的介面。讓原本不可能通訊的程式,通過內容提供者這個橋梁變得可以通訊。

定義乙個類 ,繼承 contentprovider

public class backdoor extends contentprovider {}註冊contentprovider , 要新增authorities的屬性

android:name="com.sky.db.dbprovider"

android:exported="true"

android:authorities="com.sky.db.bank">

provider>

宣告 urimatcher ( uri 匹配器)

/**

* 只要誰能說對了這個口令就可以來操作內容提供者,這樣實際上是不安全的,所以為了防範或者是過濾 必須要對uri進行嚴格的匹配,或者是叫做公升級口令

* ,密碼

*/// 宣告乙個匹配器,只要來呼叫crud的方法,都先用這個匹配器去過濾uri , 裡面給定的引數是指:如果沒有匹配,那麼將返回這個code

static urimatcher match = new urimatcher(urimatcher.no_match);

使用靜態**塊,預設匹配規則

// 使用靜態的**塊來預設一些匹配規則,也就是給這個匹配器先制訂一套規則

static

在crud裡面判斷來訪的uri是否正確

@override

public

intdelete(uri uri, string selection, string selectionargs) else

// int result = mather.match(uri);

return

0;}

在其他應用程式通過內容解析者操作內容提供者

public

void

insert(view v)

內容提供者在運算元據成功後,對外發出乙個通知,關心這個通知的觀察者就能收到通知。

getcontext().getcontentresolver().notifychange(arg0, null);

其中兩個引數的意義如下:

1. 屬於什麼樣的uri對應的資料已經發生改變了

2. 內容觀察者

* 如果內容觀察者給null, 代表的時候資料發生改變,我就發出來乙個通知,關心這個通知的人,就會收到改變的通知。

* 如果直接指定了乙個物件,達標資料一旦改變,那麼這個內容觀察者就能收到通知

註冊乙個內容觀察者,觀察指定的uri資料。

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

//註冊乙個內容觀察者

/** * 讓它觀察指定的uri路徑,如果通過了這個uri去改變了資料庫的資料,俺麼後面的內容觀察者將會得到通知。

* 中間這個引數的意思是:true;只要匹配對了前半段的uri,那麼也能收到通知。false,代表全部uri,乙個字母不漏,都要完全匹配,才能收到通知

*/getcontentresolver().registercontentobserver(uri, true, new contentobserver(new handler())

});

android 四大元件

1.activity 2.service 3.contentprovider 應用中的資料,對外進行共享,其它應用可以通過內容提供者,可以訪問到你應用中的資料,對資料進行增刪改查 1 對不同的資料格式,統一了檔案格式和資料訪問api 2 內容提供者要繼承contentprovider類 3 在清單檔...

Android 四大元件

activity intent receiver service content provider 並不是每乙個android應用程式都需要這四種構造塊,這不是必須的。當我們明確了我們的應用需要哪些構造塊後,我們就需要在androidmanifest.xml中登記這些構造塊的清單。這個配置檔案用於定...

android四大元件

android 四大元件 1.contentprovider contentprovider是什麼 android中的乙個應用元件 作為乙個引用元件的表現是生命週期方法 android中內容提供者 一般是內部儲存中的資料 contentprovider 物件的應用場合 例如 3.contentpri...