概述
ContentProvider內(nèi)容提供者是andorid四大組件之一ContentProvider為不同的軟件之間數(shù)據(jù)共享,提供統(tǒng)一的接口。
作用:contentprovider在andorid中的作用就是對(duì)外共享數(shù)據(jù),使用ContentProvider對(duì)外共享的好處就是統(tǒng)一了數(shù)據(jù)的訪問方式也就是說筋粗,可以通過ContentProvider把應(yīng)用中的數(shù)據(jù)共享給其他應(yīng)用訪問,其他應(yīng)用可以ContentProvider對(duì)應(yīng)用中的數(shù)據(jù)進(jìn)行增刪改查操作。
話不多說上圖
簡單概述一下事件紛發(fā)的過程
從activity開始進(jìn)入事件紛發(fā):Activity無論返回true或者false凛捏,都是自己消費(fèi);因?yàn)樗约壕褪琼攲忧鄣蓿幌到y(tǒng)消費(fèi)坯癣,當(dāng)返回super向下紛發(fā)。交給子ViewGroup最欠,如果viewGroup的dispatchTouchEvent返回true就自己消費(fèi)示罗,返回false就交給上一層消費(fèi)惩猫,返回super就交給自身攔截事件,攔截事件返回true的話自己消費(fèi)蚜点,其他的返回結(jié)果就是繼續(xù)紛發(fā)(在這提醒一下大家只有容器才有OnInterceptTouchEvent轧房,也就是說只有ViewGroup才有這個(gè)方法)子View的紛發(fā)事件為true自己消費(fèi),返回false交給上一層
進(jìn)入細(xì)節(jié)代碼
創(chuàng)建屬于自己的ContentProvider绍绘,實(shí)現(xiàn)對(duì)外共享的步驟
(1)繼承ContentProvider奶镶,重新方法,代碼如下:
public class PersonContentProvider extends ContentProvider{
public boolean onCreate()
public Uri insert(Uri uri, ContentValues values)
public int delete(Uri uri, String selection, String[] selectionArgs)
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs)
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)
public String getType(Uri uri)
}
(2)在AndroidMainfest.xml文件中配置文件陪拘,在代碼中操作
然后給大家介紹一下URI
(1)概述
Uri代表要操作的數(shù)據(jù)
Uri主要是包含了兩部分:
a.需要操作的ContentProvider
b.對(duì)ContentProvider要進(jìn)行操作
(2)Url組成
1).ContentProvider的scheme已經(jīng)被Android規(guī)定
scheme:就是content
2).主機(jī)名或者叫(Authority)用于唯一識(shí)別這個(gè)ContentProvider厂镇,外部調(diào)用者看可以根據(jù)這個(gè)標(biāo)識(shí)來找到它
3).路徑(path)可以用來標(biāo)識(shí)我們要操作的數(shù)據(jù)
4).操作不同的數(shù)據(jù),來自數(shù)據(jù)庫藻丢、文件剪撬、xml或者網(wǎng)絡(luò)
操作方式:Uri uri=Uri.parse("");
當(dāng)然不能忘了在清單文件里注冊
<provider
android:name="com.example.contentproviderpractice.PeopleContentProvider"
android:authorities="com.example.student"
android:exported="true" >
</provider>