You are on page 1of 35

Content Provider

www.mobilepro.vn
Professional Programming

Ni dung

Content Provider l g?
M hnh d liu
URIs
Truy vn vi Content Provider
Thay i d liu Content Provider
To 1 Content Provider

Content Provider l g?
C th hiu ContentProvider theo 2 cch :
L kho d liu m tt c cc ng dng c th truy cp v
s dng ( lu tr, c, ghi..) nh Contacts, Browser,
CallLog
L cch duy nht cc ng dng chia s d liu vi
nhau

C 2 loi Content Provider


Content Provider c sn ca h thng
Content Provider do ngi dng t nh ngha

ContentProvider c sn
H iu hnh Android i km vi 1 kho d liu
di dng ContentProvider
Ch yu l cc d liu di dng Audio, video,
images, contacts, info
Nm trong gi android.provider

Ngi dng c th s dng cc cu truy vn


ly d liu
EL9DemoCP

Kho d liu ContentProvider

EL9DemoCP

Lm sao public d liu?


C 2 cch:
To ring d liu di dng ContentProvider ( hng
dn sau )
Thm d liu vo cc provider c sn ( lu phi
cng kiu d liu ) v phi thm permission ghi
d liu vo provider

ContentProvider Implementation
Tt c cc lp ContentProvider u phi implement ( thc
thi ) 1 interface ging nhau :

Truy vn cc provider v tr li d liu


Thm d liu
Xa d liu
Chnh sa d liu

D liu ContentProvider c th lu tr di dng File h


thng hoc SQLite
Client truy cp d liu ContentProvider thng qua lp
ContentResolver

Demo ti lp
To 1 Content Provider cho 1 c s d liu
cha cc i tng Book . M t :
i tng Book gm 2 thuc tnh : id & tittle
Content Provider s dng SQLite Database
cha d liu.
Thc hin cc thao tc thm, sa, xa, truy vn

Bi tp ti lp
T 1 ng dng khc , truy vn d liu Book
to t Demo trc . VD : Show Toast hin
th tn i tng sch u tin.
Ch : override phng thc query() ca
BookProvider.

M hnh d liu Content Provider

M hnh d liu
Cu trc d liu ContentProvider di dng cc
bng ( ging nh database)
Mi hng l 1 bn ghi , mi ct l 1 trng ( thuc
tnh)
Mi bn ghi u c trng _ID phn bit vi cc
bn ghi khc

D liu Cursor
D liu tr li khi truy vn vi ContentProvider di
dng Cursor
S dng cc phng thc move(int Offset) ,
moveToFirst(), moveToLast(), moveToNext(),
moveToPosition(int Position) duyt Cursor
ly c d liu t Cursor , bt buc phi ly
c columnIndex v bit c kiu ca d liu,
sau s dng cc phng thc : getDouble(int
columnIndex), getString(int columIndex), .) ly
d liu

URIs

URI
D liu ContentProvider c show thng qua
URI ( 1 chui String tr n d liu CP)
Tt c cc URIs tr n d liu ContentProvider
u bt u vi chui content://

System URIs
Android nh ngha hng s CONTENT_URI cho
tt c cc provider c sn trong h thng
V d : URI cho bng cha d liu s in thoi
trong danh b v URI cho bng d liu cha nh
cc bn ghi trong danh b:

Cu trc 1 URI
A : Tin t bt buc nh du y l 1 URI tr
n d liu CP -> Khng c sa
B : ng dn n kho d liu CP -> Duy nht
C : Tn bng d liu c yu cu
D : ID ca bn ghi cn ly

1 s ContentURI

Contact : ContactsContract.Contacts.CONTENT_URI
Setting : System.Setting.CONTENT_URI
Call Logs : CallLog.Calls.CONTENT_URI
Browser Bookmarks : Browser.BOOKMARKS_URI

=> Ch : Cn ng k permission trc khi s dng.

Truy vn 1 ContentProvider

Truy vn ContentProvider
Cn 3 thng tin sau truy vn 1 CP:
URI tr n CP
Tn bng d liu mun ly
Kiu d liu ca cc thuc tnh ( ly d liu t
Cursor ra )

Nu truy vn ly 1 bn ghi th cn bit ID ca


bn ghi .

V d truy vn 1 bng

V d truy vn 1 bn ghi
Cn bit c ID ca bn ghi
C th s dng cc phng thc h tr :

c d liu t Cusror

Thay i d liu ContentProvider

Cc chc nng hay s dng:


Thm bn ghi mi
Update d liu cho cc trng ca bn ghi tn ti
Xa bn ghi

Bt buc phi s dng cc phng thc ca lp


Content Resolver

Cc bc thm bn ghi mi
Khi to 1 i tng ca lp ContentValues cha d
liu cc trng tng ng ( s dng phng thc put (
COLUMN, DATA) )
S dng phng thc ContentResolover().insert() thm
d liu vo bng

Update d liu
S dng phng thc ContentResolover.update()

Xa bn ghi
Xa 1 bn ghi :
S dng phng thc ContentResolver.delete() vi URI
ca 1 bn ghi truyn vo.

Xa nhiu bn ghi :
Vn s dng phng thc ContentResolver.delete()
nhng vi URI tr n bng d liu.
VD: android.provider.Contacts.People.CONTENT_URI
Ngoi ra s dng thm mnh WHERE trong SQL
xc nh xem nhng bn ghi no mun xa.

To 1 content provider

Cc bc to ContentProvider
To h thng lu tr d liu ContentProvider
> Recommended : S dng SQLite

To 1 lp extends t lp ContentProvider
thao tc vi cc phng thc truy cp d liu
Implement 6 phng thc : query(), insert(),
update(), delete(), getType(), onCreate()

Khai bo content provider ca ng dng trong


AndroidManifest.xml

Khai bo ContentProvider
Mc ch h thng bit content provider m
bn xy dng.
Khai bo trong AndroidManifest.xml s dng tag
<provider>

Homework 1
Vit 1 ng dng bao gm 2 activity :
Activity 1 : C tn l ContactList.java
L 1 ListActivity , hin th list cc danh b trong my.
Khi click vo 1 item trong list s chuyn sang Activity 2.

Activity 2 : C tn l ContactEditor.java
L 1 form cha giao din sa cc thng tin ca 1 danh b.
Hin th d liu ca danh b tng ng t Activity 1 gi sang ( Bao gm Tn,
Email, S in thoi, avatar )
Sau khi sa xong, ngi dng click vo button Save lu li, d liu c
update . Ch kim tra bng cch m li danh b trong my xem thng tin c
sa thnh cng hay cha.

Gi : ContentURI ca Contact :
ContactsContract.Contacts.CONTENT_URI

Chn giao din ContactList.java

Custom listview

Click item -> chuyn sang DetailActivity

Custom listview

Chn giao din ContacEditor

Homework2
Vit 1 ng dng hin th list cc note c trong
ng dng Notepad ( lm t bui trc ).

You might also like