Android 75

84일차(1)/Android App(47) : Content Provider

84일차(1)/Android App(47) : Content Provider 새 모듈 생성- Empty Activity step20contentprovider activity_main.xml - 이름을 입력하고 버튼을 누르면 휴대폰의 연락처 앱(contacts) 에서 연락처 불러오도록 하기 - 우리 앱에서 그 정보들을 가지고 올 수 있는지 권한 체크! AndroidManifest.xml - manifest에 권한 관련 내용 추가 (permission) - 하지만 이것만 있다고 승인되는건 아니고, 퍼미션을 유도하는 코딩이 필요하다.(사용자에게 권한 옵션 보여주기) - 하지만 설정에 들어가보면 권한이 없다고 나온다.(Off 상태) - 앱이 처음 설치되었을 때는 이 값이 '허용되지 않음'으로 나온다. - 그래..

국비교육(22-23) 2023.02.08

83일차(1)/Android App(46) : 전화걸기 기능 구현

83일차(1)/Android App(46) : 전화걸기 기능 구현 - 이전 코드 복습 (Interceptor) - 안드로이드에서 logincheck 경로로 원격지 서버에 로그인여부를 요청한다. - 그러면 spring 서버에서 세션에 id라는 키값으로 저장된 값이 있는지 확인해서 map으로 응답한다. - builder로 가져온 문자열을 사용해서 JSONObject 객체를 사용해서 읽어온다. - 가상기기가 아닌 실 기기를 사용하면 이렇게 wifi를 사용한다. - 저 인터넷 망에 컴퓨터가 들어온다. 와이파이 중계기도 있다. - 이 컴퓨터에서 tomcat 웹서버를 돌린다. 이 서버의 ip 주소가 있다.(가상 ip) - 가상 ip란 이 주소가 이 집 안에서만 통용되는 ip라는 의미이다. - 가상기기가 아닌 진짜 ..

국비교육(22-23) 2023.02.07

[Android Studio] 모듈 의존성 제거 (모듈 삭제)

- Android Studio 에서 모듈 의존성 제거 / 모듈 삭제 방법 - 한 프로젝트 안에 여러개의 모듈을 만들어서 연습할 때, 모듈이 너무 많아서 프로그램이 무겁다면 사용하지 않는 모듈의 의존성을 제거할 수 있다. - File-Project Structure - 모듈을 선택하고, 위의 - 를 누르면 이런 창이 뜬다. - 모듈의 의존성을 제거하는 것이지만 디스크에서 파일을 삭제하는 것은 아니라는 뜻! - yes를 누르면 파일 목록에서는 사라진다. - 제거한 모듈을 다시 추가하고 싶다면 - File-Project Structure 에 들어가서 + 버튼을 누르면 아래 창이 뜬다. - 이 창 좌측 하단의 import 에서 제거했던 모듈을 불러올 수 있다. - 해당 폴더를 다시 선택해서 import 해오면 ..

국비교육(22-23) 2023.02.07

82일차(2)/Android App(45) : Interceptor 활용하기

82일차(2)/Android App(45) : Interceptor 활용하기 - 로그인 여부에 따라서 응답방식이 달라지는 기능은? - jsp의 LoginFilter, spring의 Interceptor와 같은 종류 - 기존에는 LoginInterceptor 를 만들어서 Webconfig에 등록했다. - WebMvcConfigurer 인터페이스를 구현하고 @Configuration 어노테이션 붙이기 - 특정 폴더 하위의 모든 요청이 interceptor를 거치게 했다. LoginInterceptor package com.sy.boot07.interceptor; import java.net.URLEncoder; import javax.servlet.http.HttpServletRequest; import j..

국비교육(22-23) 2023.02.07

82일차(1)/Android App(44) : 로그아웃 기능 구현

82일차(1)/Android App(44) : 로그아웃 기능 구현 - 로그인 기능 코드 리뷰 AndroidController - logincheck 요청에서 Map 요청 - Map을 responsebody로 요청하면 { } 이렇게 json 문자열로 응답된다. - session을 사용해서 저장된 id가 없으면 isLogin이라는 키 값으로 값을 담아준다. - 저장된 id가 있으면 true와 아이디를 담아준다. - 클라이언트가 웹브라우저가 아니고 안드로이드 앱이므로! json으로 응답한다. [ 웹서버가 json으로 응답하는 case ] 1. 웹브라우저에서 ajax 요청을 해올 때 2. 모바일 App에서 http 요청을 해올 때 1. 웹브라우저에서 ajax 요청을 해올 때 {"isLogin":true} 이런 ..

국비교육(22-23) 2023.02.06

80일차(1)/Android App(43) : 로그인 기능 구현

80일차(1)/Android App(43) : 로그인 기능 구현 - 웹서버는 수많은 클라이언트의 요청을 처리한다. - 1~3 클라이언트 : 웹브라우저, 4~5 클라이언트 : 안드로이드 라고 하자. - 웹서버는 이런 클라이언트들이 요청해오면 보통 html 컨텐츠를 응답한다. - 웹서버에 뭔가 요청을 하면 어떤 값을 리턴해주는데 이는 데이터(html), 디자인(css)과 동작(js)을 같이 응답하는 것이다. - 웹브라우저 상에서 뭔가의 서비스를 이용할 수 있도록 한다. - 그런데 앱이 요청을 하면? 응답은 json으로 한다. - 동작은 이미 앱 안에서 정해져 있고, 데이터(json)만 전달한다. - 앱에게 디자인, 동작을 응답하지는 않는다. 앱에게 필요한 링크만 응답한다. - 웹서버는 모든 요청에 항상 응답..

국비교육(22-23) 2023.02.03

79일차(1)/Android App(42) : Http 요청으로 Oracle DB 출력하기

79일차(1)/Android App(42) : Http 요청으로 Oracle DB 출력하기 - 안드로이드 앱에서 DB에 있는 Todo 리스트 가져오기 - 안드로이드 앱에서 DB 테이블에 데이터 추가, 삭제하기 새 모듈 생성 activity_main.xml - sqLite 예제에서 사용한 layout 복사해옴 - 이전 예제에서는 내부 DB를 사용한 것이고, 이번 예제에서는 같은 기능을 SpringBoot의 oracle DB를 활용해서 해볼 것! - step13에서 할일을 입력해서 ListView에 추가했던 것처럼 원격지 DB에 들어갈 수 있도록 코딩. 삭제- 오래 클릭시 들어오는 요청으로삭제 - 안드로이드 앱과 서버 간의 대화를 구현하기. - SQLite에 UI를 다루는 기본동작은 있다. (이 경우 dbH..

국비교육(22-23) 2023.02.02

78일차(1)/Android App(41) : Http POST방식 요청하기(4) - JSONArray 활용

78일차(1)/Android App(41) : Http POST방식 요청하기(4) - JSONArray 활용 - 이전 예제 코드리뷰 AsyncTask - 앱을 run하면 onCreate가 순식간에 실행되었다가 종료되면서 앱이 활성화된다. - 이후 여기에 등록한 리스너(전송버튼)를 누르면 어떤 객체로 실행의 흐름이 들어온다. - 위의 파란색 스레드도 UI 스레드이다. 앱이 처음에 활성화될때 사용된 스레드와 같은 스레드이다. - UI는 이 메인스레드 안에서만 업데이트할 수 있다. - 진행에 시간이 소요되는 불확실한 작업을 한다면? -> 원칙적으로 메인스레드에서는 하면 안된다. - 일반적으로 메인 스레드는 사용자의 입력에 반응해서 빠르게 반응해야 하는데, 그러지 못하기때문에... 그런 작업은 새 스레드에서 해..

국비교육(22-23) 2023.01.30

77일차(4)/Android App(40) : Http POST방식 요청하기(3)

77일차(4)/Android App(40) : Http POST방식 요청하기(3) step17httprequest3 - http 요청 코틀린으로 작성해보기 - 안드로이드 스튜디오의 기능 중 java->kotlin 변환기능이 있다. - Util을 가져와서 우클릭- convert to Kotlin 을 해본다! - 오류나는건 일부 수정하기.. Util.kt package com.example.step17httprequest3 import android.app.Activity import android.content.Context import android.os.AsyncTask import android.view.View import android.view.ViewGroup import android.view..

국비교육(22-23) 2023.01.30