이 영역을 누르면 첫 페이지로 이동
천천히 꾸준히 조용히 블로그의 첫 페이지로 이동

천천히 꾸준히 조용히

페이지 맨 위로 올라가기

천천히 꾸준히 조용히

천천히 꾸준히 조용히.. i3months 블로그

[Android] 내용 제공자 (Content Provider)

  • 2021.11.29 10:07
  • Mobile/Android
반응형

 

 

 

한 앱에 대해서 데이터베이스를 만들고 만든 데이터베이스를 다른 앱에서 사용할 수는 없을까?

이 때 내용 제공자를 통해서 데이터베이스에 접근할 수 있다. (앱의 보안과 연관됨)

내용 제공자를 사용하기 위해서 새로 내용 제공자를 만들 수도 있지만, 이미 만들어져있는 내용 제공자를 사용해 정보를 가져오는 부분에 집중해서 공부하자.

 

안드로이드 앱의 구성요소로 액티비티 / 서비스 / 방송 수신자 / 내용 제공자가 있는데 마지막 부분인 내용 제공자에 대해 알아보자. 내용 제공자도 앱의 구성요소 중 하나이기 때문에 시스템에서 관리한다.

 

여기서 내용 (Content)에는 전화번호, 이미지, 텍스트 등등.. 여러가지가 될 수 있다. 

내용 제공자를 사용할 때는 Resolver 객체를 사용한다.

우리가 얻으려는 데이터는 네트워크로부터 올 수 있고, 파일로부터 올 수 있고, 키보드로부터 오는 등.. 여러 가지 경로가 있다. 잠시 Java의 입출력을 생각해보자. InputStream을 추상화함으로써 입력을 처리했는데 안드로이드에서도 Resolver 객체를 사용해 데이터에 접근할 수 있다. 

 

위와 같이 Provider는 Resolver를 통해서 데이터에 접근할 수 있다. (CRUD Create Read Update Delete) 여기서 Provider를 관리하는 Resolver는 유일한 주소인 uri를 가진다. (Uniform Resorce Identifier) 인터넷 상의 주소인 url과 비슷함.

 

내용 제공자를 이용해 앨범과 연락처를 조회해보자.

 

이미지 선택을 눌렀을 때 갤러리에서 사진을 가져오고 밑에 위치한 이미지 뷰의 이미지를 가져온 이미지로 바꿔보자.

 

 

 

 

 

 

 

 

 

 

 

버튼을 누를 시 인텐트를 이용해 갤러리 화면을 띄운다.

 

위에서 받은 101을 비교하고 맞다면 resolver를 생성해 선택한 사진을 보여준다. 

InputStream 객체로부터 읽어온다. 이 때 이미지를 가진 파일은 Bitmap을 통해 처리한다. (코드 참조)

 

여기서 Intentview에서 다른 서비스를 이용하려면 권한이 있어야 한다.

 

 

SD 카드에 저장된 이미지 파일에 접근하기 위해 매니페스트 파일에 권한을 추가시킨다.

 

 

MainActivity와 build에도 코드를 추가해야 한다. (위험 권한 부여를 위함)

 

연락처 가져오기 버튼을 누르면 연락처 화면이 나타나고 선택한 연락처를 보여주자.

 

 

 

 

 

 

 

 

 

 

 

 

 

버튼을 누르면 연락처 선택 화면이 나타난다. (ChooseContacts 메서드)

사진의 경우와 마찬가지로 101과 비교하고 맞으면 연락처의 내용을 가져온다.

getContacts 메서드를 살펴보자.

 

 

Cursor는 Select 명령어의 Return 타입이다. 데이터베이스가 테이블 형태로 있다고 생각하자. (행 열이 있는 테이블)

쿼리문법에서 *는 모두를 의미. where는 조건 추가. order by는 정렬 기준. (데이터베이스에서 공부함)

1. uri 부분은 특정 사람의 연락처

2. 어떤 칼럼을 조회할 지 결정 null 이면 모든 칼럼을 가져옴 

3. where부분 null 이면 조건 없음

4. 3 에 값이 있으면 조건 값을 대체하기 위해 사용

5. 정렬 기준 null 이면 정렬 없음

 

 

실행 시 John 에 대한 모든 정보를 나타낸다. 

반응형

'Mobile > Android' 카테고리의 다른 글

[Android] 네트워킹 2  (0) 2021.12.13
[Android] 네트워킹 1  (0) 2021.12.05
[Android] 모바일 데이터베이스  (0) 2021.11.21
[Android] 음악 재생 플레이어 만들기  (0) 2021.11.21
[Android] 리스트 보여주기  (0) 2021.11.21

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • [Android] 네트워킹 2

    [Android] 네트워킹 2

    2021.12.13
  • [Android] 네트워킹 1

    [Android] 네트워킹 1

    2021.12.05
  • [Android] 모바일 데이터베이스

    [Android] 모바일 데이터베이스

    2021.11.21
  • [Android] 음악 재생 플레이어 만들기

    [Android] 음악 재생 플레이어 만들기

    2021.11.21
다른 글 더 둘러보기

정보

천천히 꾸준히 조용히 블로그의 첫 페이지로 이동

천천히 꾸준히 조용히

  • 천천히 꾸준히 조용히의 첫 페이지로 이동

검색

방문자

  • 전체 방문자
  • 오늘
  • 어제

카테고리

  • 분류 전체보기 (670) N
    • Algorithm (205)
      • Data Structure (5)
      • Theory && Tip (33)
      • Baekjoon (166)
      • ALGOSPOT (1)
    • Spring (123)
      • Spring (28)
      • Spring Web MVC (20)
      • Spring Database (14)
      • Spring Boot (6)
      • Spring 3.1 (11)
      • Spring Batch (6)
      • Spring Security (16)
      • JPA (12)
      • Spring Data JPA (5)
      • QueryDSL (4)
      • eGovFramework (1)
    • Programming Language (74)
      • C (25)
      • C++ (12)
      • Java (19)
      • JavaScript (15)
      • Python (1)
      • PHP (2)
    • Computer Science (142)
      • Machine Learning (38)
      • Operating System (18)
      • Computer Network (28)
      • System Programming (22)
      • Universial Programming Lang.. (8)
      • Computer Architecture (4)
      • Compiler Design (11)
      • Computer Security (13)
    • Database (21)
      • Database (7)
      • MySQL (3)
      • Oracle (3)
      • Redis (5)
      • Elasticsearch (3)
    • DevOps (20)
      • Docker && Kubernetes (8)
      • Jenkins (4)
      • Amazon Web Service (8)
    • Mobile (28)
      • Android (21)
      • Flutter (7)
    • 💡 솔루션 (16)
    • 👥 모각코 (6)
    • 💬 기록 (6)
    • 📚 공부 (4) N
    • -------------- (25)

최근 글

나의 외부 링크

메뉴

  • 홈
반응형

정보

i3months의 천천히 꾸준히 조용히

천천히 꾸준히 조용히

i3months

블로그 구독하기

  • 구독하기
  • RSS 피드

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. Copyright © i3months.

티스토리툴바