전체 글 (272) 썸네일형 리스트형 내용 제공자 사용하기, 연락처 조회 연락처에는 이름이나 전화번호와 같이 다양한 정보들이 있기 때문에 내용 제공자를 위한 코드가 더 많이 사용된다 연락처에 대한 정보는 ContactsContract.Contacts 객체가 가리키는 테이블에 저장되어 있다 연락처에 대한 상세 정보는 ContactsContract.Data 객체가 가리키는 테이블에 저장되어 있다 AndroidManifest.xml build.gradle(Module) dependencies { ... implementation 'com.yanzhenjie:permission:2.0.3' } activity_main.xml package com.example.a64_sample_contacts; import androidx.annotation.Nullable; import andr.. 내용 제공자 사용하기, 앨범 조회 실제 앱을 만들 때는 내용 제공자를 사용해야 하는 경우가 더 많다 내용 제공자를 이용해 앨범에 저장된 사진과 연락처에 저장된 정보를 조회해 보는 것은, 내용 제공자를 사용하는 가장 대표적인 경우이다 AndroidManifest.xml build.gradle(Module) dependencies { ... implementation 'com.yanzhenjie:permission:2.0.3' } activity_main.xml MainActivity package com.example.a63_sample_album; import androidx.appcompat.app.AppCompatActivity; import android.content.ContentResolver; import android.con.. 호스트와 컨테이너의 파일 시스템 연결 https://youtu.be/AmSKD4p-jhw 도커 안에서 파일을 직접 수정하는 것은 매우 불편하고 위험한 작업이다 컨테이너를 사용하는 이유는 필요할 때 언제든지 생성했다가, 필요없어지면 언제든지 지울 수 있기 때문이다 docker run -p 8888:80 -v [호스트 디렉토리]:[컨테이너 디렉토리] httpd docker run -p 8888:80 -v C:\workspace\htdocs:/usr/local/apache2/htdocs/ httpd 호스트인 내 컴퓨터의 파일과 컨테이너의 파일이 공유 상태가 되었다 연결이 유지된 상태에서, 내 컴퓨터의 index.html을 수정하면 컨테이너의 index.html도 수정된다 명령어 실행, index.html 수정 https://youtu.be/P0ZFyB4iQd0 https://docs.docker.com/engine/reference/commandline/exec/ 리눅스 명령어 pwd를 입력하면 호스트 안에서 pwd가 실행된게 아니라, 컨테이너 안으로 들어가서 pwd 명령어가 실행된다 docker exec [OPTIONS] CONTAINER COMMAND [ARG...] docker exec -it ws3 /bin/sh ws3 컨테이너에서 연결을 유지하면서 본쉘을 실행하는 명령어 쉘 프로그램들은 사용자의 명령어를 받아서 운영체제에 전달하는 기능을 한다 --interactive , -iKeep STDIN open even if not attached --tty , -tAllocate a pseudo-TTY 터미.. 도커와 네트워크 https://youtu.be/SJFO2w5Q2HI 도커를 이용해 웹 서버를 설치하면, 웹 서버는 컨테이너에 설치된다 이 컨테이너가 설치된 운영체제를 도커 호스트로 부른다 하나의 도커 호스트에는 여러 개의 컨테이너가 만들어질 수 있다 컨테이너와 호스트 모두 독립적인 실행환경이기 때문에, 각자 독립적인 포트와 파일 시스템을 가지고 있다 웹 서버로 접속하려면 호스트와 컨테이너를 연결해야 한다 호스트의 80번 포트와 컨테이너의 80번 포트를 연결해주어야한다 docker run -p 80:80 httpd 앞의 80은 호스트의 포트, 뒤의 80은 컨테이너의 포트이다 이렇게 설정을 해주면 호스트의 80번 포트로 들어온 신호가 컨테이너의 80번 포트로 전송된다 이렇게 연결된 포트로 신호를 전송하는 것을 포트 포워딩이.. 이미지 run https://youtu.be/iLcUr0EQdrM https://docs.docker.com/engine/reference/commandline/run/ cmd 명령어 docker run httpd httpd 이미지 run docker ps 실행 중인 컨테이너 표시 (httpd를 실행 중인 cmd는 그대로 두고, 새 cmd를 띄워서 입력) docker run --name [이름] httpd httpd를 ws라는 이름을 정해주고 이미지 run docker stop [이름] 또는 [컨테이너 ID] 컨테이너 실행 중지 ws 컨테이너를 stop으로 중지하고 docker ps를 하면, ws는 보이지 않는다 docker ps -a 중지된 상태까지 모두 표시 docker start [이름] 중지시켰던 도커 시작 d.. 내용 제공자 내용 제공자는 컨텐트 프로바이더라고도 부르며, 한 앱에서 관리하는 데이터를 다른 앱에서도 접근할 수 있도록 해준다 내용 제공자도 앱 구성요소이기 때문에 시스템에서 관리하며, 매니페스트 파일에 등록해야 사용할 수 있다 내용 제공자가 필요한 이유는 앱의 보안 때문이다 다른 사람이 만든 앱이 나의 앱의 데이터를 마음대로 바꾸면 안되기 때문이다 그래서 각 앱은 자신의 프로세스 권한 안에서만 데이터에 접근할 수 있도록 되어 있다 A라는 앱과 B라는 앱은 각각 독립된 프로세스를 가지고 있으며, A는 A의 데이터를, B는 B의 데이터만 사용해야 한다 하지만 가끔은 서로 다른 앱의 데이터에 접근해야 하는 경우, 내용 제공자를 사용하게 되면, 다른 앱에게 데이터 접근 통로를 열어줄 수 있다 주의할 점은 반드시 허용된 통.. 데이터 조회하기 https://developer.android.com/training/data-storage/sqlite?hl=ko 가이드 문서에서는 조금 다른 방법으로 안내한다 activity_main DatabaseHelper.java package com.example.a61_sample_database_sqliteopenhelper; import android.content.Context; import android.database.DatabaseErrorHandler; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; import androidx... 이전 1 ··· 7 8 9 10 11 12 13 ··· 34 다음