1. SharedPreferences란?SharedPreferences는 안드로이드에서 작고 단순한 데이터를 기기에 영구 저장하기 위한 키-값(Key–Value) 저장소이다.- “설정값”이나 “간단한 상태값”을 저장할 때 주로 사용 - 앱을 껐다 켜도 값이 남아 있음 - 내부적으로는 XML 파일로 저장됨 (`/data/data/패키지명/shared_prefs/파일명.xml` 위치) 2. 언제 SharedPreferences를 쓰면 좋을까? ✅ 쓰기 좋은 경우- 자동 로그인 여부 (`isAutoLogin = true/false`) - 앱 최초 실행 여부 (튜토리얼 보여줬는지 여부) - 다크 모드 설정 (`theme = "dark"`) - 알림 허용 여부 (`allowNotification = ..
What's 스킴(Scheme)? → URL의 “프로토콜 이름”https://naver.comhttps ← 이 부분이 스킴(scheme):// ← 스킴 구분자 URL이 “무슨 종류의 명령인지” 나타내는 식별자 🔵 다양한 스킴 예시https://google.com → 스킴: httpshttp://example.com → 스킴: httpfile:///path → 스킴: filetel:01012345678 → 스킴: telmailto:test@test.com → 스킴: mailtointent://something → 스킴: intent ❗ 스킴을 처리하지 않으면?예시 1)웹에서 “전화 걸기” 버튼 → 눌러도 아무 일도 안 일어남 예시 2)카카오톡 로그인, 네이버 로그인 등 외부 앱 ..
🔵 1. 페이지 로딩 관련 콜백onPageStarted페이지 로딩 시작할 때 : 로딩 시작 → 스피너 표시 할 때onPageFinished페이지 로딩 완료할 때 : 페이지 로딩 완료 후 JS 호출, 스피너 종료 등을 수행할 onLoadResource페이지에서 리소스(이미지, CSS 등)를 불러올 때onReceivedError일반 로딩 에러 발생 시onReceivedHttpErrorHTTP 에러(404, 500 등) 발생 시onReceivedSslErrorSSL 인증서 에러 시 🔵 2. URL 처리·네비게이션 관련 콜백shouldOverrideUrlLoadingWebView가 특정 URL을 로드할지 말지 결정하는 핵심 콜백shouldInterceptRequest네트워크 요청을 가로채서 직접 응답을 줄 ..
AGP란?AGP(Android Gradle Plugin)는 Android 앱을 빌드하기 위한 Gradle 플러그인이다. 주요 역할 - Android 프로젝트 빌드: Java/Kotlin 코드 컴파일, 리소스 처리, DEX 변환, APK/AAB 생성 - Android SDK 통합: Android SDK 도구들과 연동 - 빌드 설정 관리: build.gradle의 android { } 블록 제공 - 멀티 모듈 지원: app, library 모듈 관리 버전별 주요 변화 - AGP 7.x: package 속성과 namespace 공존 가능 (경고만) - AGP 8.0+: namespace 필수, package 속성 사용 시 빌드 실패 - AGP 8.0+: Java 17 필수, Gradle..
@JavascriptInterface란 무엇인가?간단하게 정리하자면, WebView에서 JavaScript와 Java를 연결하는 다리(Bridge) 라고 생각하면 쉽다. 이 때 안드로이드환경에서 개발을 하다 보면, WebView 안에서HTML, CSS, JavaScript로 구성된 웹 페이지를 띄워야하는 상황에서 단순히 웹을 보여주는 것만으로는 부족할 때가 있는데예를 들어 웹 화면에서 버튼을 누르면, 앱의 특정 기능(예: 카메라 실행, 로그인 토큰 전달 등)을 실행해야하는 상황이 그렇다. 이때 필요한 게 바로 @JavascriptInterface @JavascriptInterface는WebView에서 실행되는 자바스크립트 코드가 Java 메서드를 호출할 수 있도록 허용하는 어노테이션이다. WebV..
# 상황회사에서 진행하게되는 프로젝트에서 안드로이드 App을 개발해야하는 업무를 마주하게 되었다.고객사의 업무시스템을 웹으로 개발 진행중인게 있는데, 웹과 동일한 화면을 앱에서도 지원하면되기 때문에웹뷰앱을 만들면되는 간단한 프로젝트라고 볼 수 있었으나, 회의에 회의가 진행된 결과 특정 업무기능들이 오프라인에서도 지원되어야한다는 것이다.(앱을 사용하는 실사용자들이 음영지역에 있을 경우가 많다고 한다.) 결국 첫 로그인시 당일에 해당 사용자가 업무를 진행하면서 조회하는 페이지들의 데이터를미리 받아놓고 sqlite3와 같은 로컬 DB에 저장했다가 그런데 그 업무기능들을 사용해야하는 페이지들이 상당히 많고, 복잡한 구조로 되어있었다.결국 필요한 것은 Spring boot + vue 조합으로 개발된 웹프로젝트의 ..