원래 안드로이드에서는 Activity로부터 결과 값을 수신 받을 때, startActivityForResult(), onActivityResult()를 사용했지만 deprecated 되었습니다. 이에 따라 공식문서에서 제안한 새로운 방식인 registerForActivityResult()를 사용해보겠습니다. private lateinit var resultLauncher: ActivityResultLauncher 먼저, MainActivity에서 값을 제네릭으로 처리해줄 Launcher 인스턴스 변수를 생성합니다. Intent 객체를 전달받기 위해 Intent를 제네릭에 명시해주었습니다. nextBtn.setOnClickListener { val intent = Intent(this, SecondActi..
안드로이드에서 앱 구현 중, 다음과 같이 툴팁 메시지 창이 필요한 경우가 있습니다. 라이브러리를 통해 해당 기능을 구현해보도록 하겠습니다. 자세한 내용은 아래 링크를 통해 확인 부탁드립니다. https://github.com/skydoves/Balloon GitHub - skydoves/Balloon: Modernized and sophisticated tooltips, fully customizable with an arrow and animations for Android. :balloon: Modernized and sophisticated tooltips, fully customizable with an arrow and animations for Android. - GitHub - skydove..
디바이스 내의 연락처 앱을 사용하다보면, 여러가지 정보들을 포함시킬 수 있는 것을 확인할 수 있습니다. 프로필 사진, 전화번호, 생일, 메모, 연락처 이름 등 다양한 데이터가 존재하는데, 이 중에서 대표적으로 화면에 보여지고 있는 프로필 사진, 생일, 연락처 이름, 연락처 고유 ID 데이터를 우리가 직접 만든 앱으로 가져올 수 있도록 구현해보겠습니다. 먼저 디바이스 연락처 접근 권한을 얻기 위한 permission tag를 AndroidManifest.xml 파일에 추가해줍니다. private fun getContacts() { if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS) != PackageManager.PE..
로그인 또는 비밀번호 찾기 기능 등을 구현 중, 이메일 검사를 진행하는데, 이때 유효한 이메일 타입 String이 아닐 경우에 대한 처리가 필요하곤 합니다. Argument로 넘어온 String이 이메일 형식인지를 확인하기 위해서 정규표현식을 사용합니다. 정규표현식이란? - 정규 표현식(regex, rational expression)은 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식언어입니다. 정규 표현식은 많은 프로그래밍 언어 또는 텍스트 편집기에서 문자열의 검색과 치환을 위해 지원하고 있으며, 이메일 형식이나 그 외 특정 문자 형식을 추출하거나 검사할 때 유용하게 쓰이고 있습니다. val emailExpression = "^[\\w.-]+@([\\w\\-]+\\.)+[A-Z]{2,4}..