1. Get permission to use the ContentProvider.


컨텐트 프로바이더로부터 권한을 요청한다.

사용자에게 해당 앱이 실제로 어떤 일을 하는지 알려주는 권한 요청 시스템을 사용함으로써 사용자를 보호한다.


1
<uses-permission android:name="com.example.udacity.droidtermsexample.TERMS_READ"/>
cs




2. Get the ContentResolver.


컨텐트 프로바이더에 접근해 데이터를 가져온다.


사용자의 기기에는 다수의 컨텐트 프로바이더가 있기 때문에

어떤 컨텐트 프로바이더가 어떤 앱과 통신하는지 관리하고 모든 데이터의 동기화를 유지해야 하는데, 

이를 해결해주는 것이 컨텐트 리졸버이다.


컨텐트 리졸버는 각 앱과 앱이 접근하고자 하는 각 컨텐트 프로바이더 사이에서 중개자 역할을 한다.

이것은 프로세스 간의 통신을 처리해주고 모든 것을 동기화시켜주며 매끄럽게 작동하게 한다.


1
ContentResolver resolver = getContentResolver();
cs

컨텐트 리졸버를 받아온다.




3. Pick one of four basic actions on the data: query, insert, update, delete.


컨텐트 리졸버에서 4가지 기본 메서드 중 하나를 호출하면

컨텐트 리졸버는 컨텐트 프로바이더에게 해당 액션을 하라고 알려준다. 


query(): 데이터 읽기

insert(): 데이터에 행 추가

update(): 데이터 갱신

delete(): 데이터로부터 행 삭제


1
resolver.query(...);
cs




4. Identify the data you are reading or manipulating to create a URI and

   Read from the ContentProvider.


1
Cursor cursor = resolver.query(DroidTermsExampleContract.CONTENT_URI, nullnullnullnull);
cs

받아온 컨텐트 리졸버를 사용해 쿼리 메서드를 호출한다.



URI

URI는 데이터의 위치를 표시하고 데이터를 가져오기 위해 사용된다.


DroidTermsExampleContract.CONTENT_URI는 content://com.example.udacity.droidtermsexample/terms 를 의미한다.

(Content Provider Prefix)       (Content Authority)        (Specific Data)                       


이 URI는 안드로이드에서 컨텐트 프로바이더를 가리키기 위한 URIdroidtermsexample이라는 프로바이더에 있는

term에 접근하고자 함을 나타낸다.



query parameter

1
resolver.query(<URI><projection><selection><selection arguments><sort order>);
cs

 

projection : 칼럼을 필터링

selection : 행을 필터링하는 방법에 대한 설명 

selection arguments : 필터링 대상

sort order : 데이터의 정렬순서



Cursor

커서는 컨텐트 프로바이더의 데이터에 읽기/쓰기 접근을 제공하는 이터레이터(iterator)이다.


커서의 데이터는 테이블 형식이다.

커서에는 현재 가리키고 있는 로우를 나타내는 위치가 있는데, 처음 커서를 반환받았을 때 커서의 위치는 -1번째 행을 가리킨다.


주요 메서드

moveToNext() : 다음 행으로 이동하는 메서드. 이동 성공 여부에 따라 true/false 리턴

moveToFirst() : 첫 번째 행으로 위치를 움직이는 메서드

getColumnIndex(String heading) : 컬럼 헤딩을 넘겨 특정 칼럼의 인덱스를 가져오는 메서드.

get<Type>(int ColumnIndex) : 특정 칼럼 인덱스의 값을 리턴하는 메서드. <Type>: String, int, long etc.

getCount() : 커서 안의 행의 개수를 리턴하는 메서드.

close() : 메모리 누수를 방지하기 위해 커서를 닫는 메서드.





Android Course of Udacity - Lesson 8

+ Recent posts