본문 바로가기

안드로이드 공부 노트59

[네이버 아이디 로그인 오류(네아로)] Fatal Exception: kotlin.UninitializedPropertyAccessExceptionlateinit property oauthLoginCallback has not been initialized 해결 방법 얼마 전 Firebase crashlytics에 아래와 같은 이슈가 올라왔다. Fatal Exception: kotlin.UninitializedPropertyAccessExceptionlateinit property oauthLoginCallback has not been initialized 상세하게 살펴보니 네이버 로그인 시 발생하는 이슈였다. 그래서 나는 열심히 구글링을 해 원인과 해결방법을 찾았다. 이제부터 공유를 해보겠다. # 이슈 원인 ※그전에 필자는 네아로 sdk v5.1.1 버전을 사용하고 있다. EncryptedPreferences 클래스에 정의된 lateinit 코드로 인해 크래시가 발생하는 것으로 보인다. object EncryptedPreferences { private latei.. 2023. 1. 24.
[Android-Compose] 안드로이드 컴포즈 Text HyperLink (텍스트 하이퍼링크) 적용하기 이번 공부 노트는 Android-Compose에서 텍스트 내용 중 하이퍼링크를 적용하는 법을 알아보겠다. 아래 코드는 스택오버플로우에서 구했는데 정확히 그 링크를 찾지 못하였다..ㅜㅜ # 적용 코드 import android.os.Build import android.text.SpannableString import android.text.style.URLSpan import android.text.util.Linkify import androidx.compose.foundation.gestures.detectTapGestures import androidx.compose.foundation.text.selection.SelectionContainer import androidx.compose.mater.. 2023. 1. 15.
[Android] 안드로이드 전화번호 포맷 맞춰주기 (전화번호 사이에 하이픈(-) 넣기) 오늘의 공부 내용은 전화번호 양식에 맞게 파싱을 해보겠다. 보통 회원가입 화면을 만들 때 전화번호를 받는다. 이때 전화번호 양식을 맞춰야하는데 보통 01012345678 처럼 하이픈(-)을 제외한 전화번호를 입력받는다. 하지만 여기서 중간마다 하이픈을 넣어주고 싶으면 여러 방법이 있는데. 이번 포스팅에서는 안드로이드에서 기본적으로 제공해주는 PhoneNumberUtils을 이용해 볼 것이다. # 오늘의 예제 화면 미리 보기 본 예제는 ViewBinding을 사용한다 아직 숙지가 안되어 있다면 링크를 클릭해 학습을 하고 오는 걸 추천한다. 이름, 나이, 전화번호를 입력받고 그 결과를 출력하는 간단한 예제이다. 여기서 중요 포인트는 전화번호를 하이픈(-) 제외 후 입력받고 결과는 전화번호 사이에 하이픈을 추.. 2022. 12. 28.
[Android-Compose] 안드로이드 컴포즈 5편 예제를 통한 Scaffold 알아보기! - topBar 이번 포스팅은 Compose에서의 Scaffold라는 컴포저블 함수 중 topBar를 공부해보겠다. # Scaffold란? Compose는 머티리얼 구성요소를 일반 화면 패턴으로 결합하는 편리한 레이아웃을 제공합니다. Scaffold와 같은 컴포저블은 다양한 구성요소와 기타 화면 요소를 위한 슬롯을 제공합니다. 공식 문서에서는 위와 같이 말하고 있다. 정리를 하자면 Scaffold는 다양한 구성요소(TopBar, BottomBar, Snackbar, FloatingActionButton, drawerContent) 슬롯을 지원한다. # 기본 구조 @Composable fun Scaffold( modifier: Modifier = Modifier, scaffoldState: ScaffoldState = r.. 2022. 12. 18.
[오류] android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views. 해결 법 최근 개발 중 timer를 사용하다가 아래와 같은 오류를 발견했다. android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views. timer(period = 3000, initialDelay = 3000) { with(binding) { if (count >= 3) { count = 0 } else { ++count } textExTitle.text = exTitleList[count] textExContent.text = exContentList[count] } } 위 코드를 보면 timer 스코프 안에서 textView의 te.. 2022. 12. 18.
[배포 - 경고] 안드로이드 구글 플레이 콘솔 앱 배포시 경고 "정부 앱 선언을 완료하지 않았습니다" 해결법 이번 포스팅은 최근 회사 어플을 배포 하려다가 갑자기 생긴 경고 메시지의 해결법을 공유 하겠다. 평소 배포와 똑같이 버전 검토를 하려던 찰나 아래 처럼 경고 메시지가 생겼다. 정부 앱 선언을 완료하지 않았습니다 나는 바로 구글링을 해보았지만 정확한 해결방법과 원인도 나오지 않았다. 구글 플레이 콘솔의 여러 기능을 눌러 보면서 나는 해결 방법을 찾았다. # 해결법 우선 글로 설명 하자면 앱 대시보드 → 왼쪽에 탭 중 정책 및 프로그램 → 앱 콘텐츠 → 정부 앱 → 어플이 정부 앱이면 정부 앱이면 예 아니면 아니요 → 저장 2022. 12. 12.