개발자 끄적끄적
방송과 컨텐트 리졸버(Content Resolver) 본문
<브로드캐스트 리시버(Broadcast Receiver)>
- 시스템이나 다른 앱이 방송하는 메시지를 받는 리시버
- 시스템 이벤트시 방송
- 시스템 부트 완료, 충전 시작, 네트워크 연결 변경, 문자 수신 등의 이벤트
- 문자 수신과 같은 민감한 정보는 권한을 필요로 한다
- 사용 방법
- 1. BroadcastReceiver 상속한 클래스, onReceive() 재정의
- 2. registerReceiver()로 1번의 클래스 객체 등록
- 이 때 수신할 방송 종류를 IntentFilter로 정의하여 포함
- 3. 더 이상 수신할 필요가 없을 때 unregisterReceiver() 호출
<Content Provider/Resolver>
- 안드로이드에서 보통은 다른 앱에 데이터를 제공해주기 위해
- 표준화된 인터페이스, 적절한 데이터 은닉과 보호 기능을 제공
<Content Resolver>
- ContentProvider에 접근하기 위한 방법
- CRUD : Create, Retrieve, Update, Delete 기능 제공
- ContentProvider에 따라 접근 권한이 필요한 경우가 있다
- 사용 방법(데이터 읽기, Retrieve)
- 1. Context에서 ContentResolver 객체 가져오기
- 2. query로 컨텐트 URI와 조건 등을 명시해서 실행, cursor 리턴
- 3. cursor를 사용하여 데이터 읽기
- 데이터 Create, Update, Delete는
- 위 2단계에서 query 대신 insert, update, delete를 사용
<Content URI>
- query, insert, update, delete 모두 첫 번째 인자가 Content URI
- Content URI에 접근하려는 content provider의 주고
- "content://제공자의이름/테이블경로"와 같은 형태
- 시스템의 컨텐트 프로바이더는 보통 미리 정의된 상수를 사용하면 된다
- CallLog.Calls.CONTENT_URI
- MediaStore.Images.Media.EXTERNAL_CONTENT_URI
<Content Resolver - Qurey, Cursor>
- cursor = query(
- android.net.Uri uri, // Content URI
- String[] projection, // 가져올 테이블의 컬럼 이름
- String selection, // 조건, SQL의 WHERE 절과 비슷
- String[] selectionArgs, // selection의 ?에 들어갈 인자
- String sortOrder) // SQL의 ORDER BY에 해당
- cursor.moveToNext()
- 컬럼 인덱스 = cursor.getColumnIndex(컬럼 이름)
- cursor.getString(컬럼 인덱스), cursor.getLong(컬럼 인덱스)
'안드로이드 프로그래밍' 카테고리의 다른 글
Coroutin, Service (0) | 2023.05.30 |
---|---|
데이터 저장(File, Preference) (0) | 2023.05.18 |
목록표시 UI (0) | 2023.05.14 |