Kotlin

    [Kotlin] txt 파일 생성하고 데이터 내보내기(export txt file)

    파일 생성하고 관리 하려면 권한이 필요 한데 ACTION_CREATE_DOCUMENT 를 이용하면 인텐트로 알아서 디바이스에 저장 위치를 넘길 수 있다. 참고 : https://developer.android.com/training/data-storage/shared/documents-files?hl=ko 1. 파일 이름, 데이터 형식 선언 하고 ACTION_CREATE_DOCUMENT 하기 private fun exportTxtFile() { createFile("파일이름.txt", "text/plain") } private fun createFile(filename: String, mimeType: String) { val intent = Intent(Intent.ACTION_CREATE_DOCUME..

    [Kotlin][Naver login 구현] 앱이 설치돼있지 않을 때 로그인 시도 시 발생하는 에러

    네이버 로그인 기능 구현 중 디바이스에 앱이 설치돼 있지 않을 때 앱이 종료 되는 현상이 발생 하였다. 오류 메세지는 아래 첨부 했고 원인을 찾아 보니 네이버 로그인 라이브러리에서 사용하는 브라우저 라이브러리의 임포트가 필요 했다. 오류 메세지 - java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/browser/customtabs/CustomTabsIntent$Builder; java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/browser/customtabs/CustomTabsIntent$Builder; at com.nhn.android.naverlogin.util.Custom..

    [Kotlin] 키보드 내리기 Hide keyboard

    안드로이드 디바이스의 소프트 키보드를 내리려면 아래 와 같은 소스를 extension으로 등록해 놓으면 편합니다. import android.app.Activity import android.content.Context import android.view.View import android.view.inputmethod.InputMethodManager import androidx.fragment.app.Fragment fun Fragment.hideKeyboard() { view?.let { activity?.hideKeyboard(it) } } fun Activity.hideKeyboard() { hideKeyboard(currentFocus ?: View(this)) } fun Context.hid..

    [Compose] 하철이 - 가로 스크롤 아이템

    [Compose] 하철이 - 가로 스크롤 아이템

    Compose 스터디를 위해서 기존 개발된 "하철이"앱을 compose 로 바꿔보는 중입니다. 1. 기본 텍스트 상단 Text( text = "실시간 하철이", fontSize = 25.sp, textAlign = TextAlign.Center, modifier = Modifier .align(Alignment.CenterHorizontally) .padding(top = 35.dp) .fillMaxWidth() ) 2. 가로 스크롤 Row LazyRow( modifier = Modifier.fillMaxWidth().padding(5.dp), state = rememberLazyListState() ) { items(subwayLines) { subway -> stationLinesItem(subway..

    [Kotlin] JCenter 서비스 업데이트로 인한 mavenCentral 전환 이슈(Migration Jcenter to mavenCentral)

    [Kotlin] JCenter 서비스 업데이트로 인한 mavenCentral 전환 이슈(Migration Jcenter to mavenCentral)

    JCenter 서비스 업데이트 여러 Android 프로젝트에서 사용하는 JCenter 아티팩트 저장소를 유지하는 회사인 JFrog가 2021년 3월 31일에 JCenter를 읽기 전용 저장소로 만들었습니다. 발표에 따르면 JCenter는 기존 아티팩트의 다운로드를 무기한으로 허용합니다. JCenter에 아티팩트를 게시하는 개발자는 패키지를 Maven Central과 같은 새 호스트로 이전해야 합니다. JCenter의 종속 항목을 사용하는 개발자는 이러한 종속 항목의 업데이트된 버전의 새 위치를 찾아야 합니다. Jcenter()가 읽기 전용으로 바뀌면서 해당 라이브러리의 유지는 가능 해졌지만 지속적인 업데이트를 위해서는 저장소의 변경이 필요 합니다. Migration JCenter to mavenCentr..

    [Compose] 클릭했을 때 리플 효과 비활성화(disable ripple effect when clicking in Jetpack Compose)

    Compose 스터디중 버튼이 아닌 Row, Column 에다 클릭이벤트를 넣어서 테스트 해봤는데, 기본 리플 효과가 적용되어 있어서 비활성화 기능을 적용해 봤다. Modifier extension을 사용 하면 리플효과 비활성화가 가능하다. inline fun Modifier.noRippleClickable(crossinline onClick: ()->Unit): Modifier = composed { clickable(indication = null, interactionSource = remember { MutableInteractionSource() }) { onClick() } } 위와 같이 선언 하고 아래와 같이 사용하면 됩니다. Row( modifier = Modifier.noRippleCli..

    [Kotlin] ONE UI 4.0 업데이트 하고 나서 앱이 사라 졌다! ㅠㅠ

    화면 검수를 위해서 One UI 업데이틑를 하고 앱을 실행하려는데 내 앱이 사라졌다 급하게 소스를 열어서 빌드 하니 빌드는 정상인데 내 핸드폰에 설치를 하려니 아래와 같은 오류가 발생했다. 원인 : Android 11 이하에서는 manifests에 설정 시 exported가 기본으로 exported=true로 되어 있기 때문에 필요시에만 exported=false로 선언해서 사용 되었습니다. Android 12 에서는 exported 를 명시적으로 선언해야 한다 (단. intent-filter 가 있는 것에만 추가해 주면 된다.) List of apks: [0] '/Users/~/Desktop/android_example/SimpleCompass/app/build/outputs/apk/debug/app-..