본문 바로가기
728x90

Android43

[Android/Kotlin] Retrofit을 이용한 https통신에서 SSL 인증서 오류 해결방법 문제상황 안드로이드에서는 버전 9부터 네트워크 통신 과정에서 http 접근을 허용하고 있지 않습니다. 하지만 Manifest에 usesCleartextTraffic 속성을 true로 설정해주는 것만으로도 우회해서 http 접근이 가능하기 때문에 그동안 https://xxxx로 적용된 API 주소를 단순히 http://xxxx로 바꿔 요청하는 방식으로 개발했습니다. 하지만 이번 프로젝트에서는 서버에서 어떤 보안(?) 처리가 되어있는지 http 접근이 도저히 되지 않았습니다. javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found. .. 2024. 1. 30.
[안드로이드] Android(Kotlin) 환경에서 지도앱으로 길찾기 연동하기(NaverMap, KakakoMap, T-Map) 개발 중인 Android 앱에 인앱에서 지도를 띄워주는 것이 아니라 외부 앱(네이버지도, 카카오맵, 티맵)으로 이동해 출발지와 도착지를 기준으로 길찾기를 바로 수행하는 기능을 구현하던 중 레퍼런스가 많이 부족하다고 느껴 한 번에 정리해두려 합니다. 이동하려는 앱의 설치 여부를 확인하고자 Intent와 URL Scheme을 이용합니다. 대부분 비슷한 방식으로 호출할 수 있지만 호출하는 URL 필드에 조금씩 다른 부분이 있습니다. 1. 네이버지도 (NaverMap) private fun searchLoadToNaverMap() { // 위도, 경도를 주소로 변환 val geocoder = Geocoder(requireContext(), Locale.KOREAN) val startLocationAddress .. 2023. 10. 30.
[안드로이드] BottomNavigationBar 메뉴 Item의 Ripple 효과 제거하기(Material 3) 스택오버플로우와 여러 블로그를 참고했을 때 레퍼런스에서 제시하는 방법은 제 상황에서는 해결되지 않았습니다. // 적용 X 가장 쉽게 볼 수 있었던 솔루션인데 Navigation의 Ripple은 그대로 남아있었습니다. (아마 디자인시스템 버전이 Material3로 올라가면서 Navigation에 Style을 적용하는 방식이 변경된게 아닐지 추측합니다,,) BottomNavigation 컴포넌트의 이런저런 속성을 건드려 보던 중 'itemActiveIndicatorStyle' 라는 속성을 발견했습니다. // 해결방법 코드에서 사용된 "@android:color/transparent"는 배경을 투명하게 해주는 의미이고, 다른 색상을 넣고 싶다면 자유롭게 color를 지정하면 됩니다. 깨끗하게 제거된 Navig.. 2023. 10. 24.
[안드로이드] Material CalendarView - 캘린더 제대로 커스텀하기(with. Range, Select, OtherDays, 주말 설정) 며칠 동안 삽질하면서 직접 커스텀한 캘린더입니다. 아무리 구글링을 해봐도 제가 이번에 만든 캘린더보다 실제 캘린더에 가깝고, 완성도 있는 커스텀 캘린더 샘플은 찾기 힘들었어요.. ;ㅅ; 캘린더 개발로 고통받는 다른 분들도 유용하게 사용하시길 바라며 공유합니다-! 😄😄 (사용된 컬러는 다크/라이트 모드 대응때문에 흑백으로 대비시키고 있지만 자유롭게 바꾸셔도 됩니다.) 어때요? 예쁘죠? 예쁘다해. 캘린더에서 날짜를 지정하고 기간을 설정할 수 있는 기능을 만들어야 했습니다. 이런저런 API와 안드로이드 OS에서 제공하는 캘린더 관련 라이브러리를 찾아보았지만 입맛에 맞는 라이브러리를 찾기 힘들더라구요.. 구현할 캘린더에서 필요한 두 가지 조건은 1. 기간 / 범위(Range) 설정이 가능해야 한다. 2. D.. 2023. 8. 24.
[안드로이드] Hilt에서 동일한 타입을 반환하는 경우: @Qulifier, public abstract static class singletonc implements ... , cannot be provided without an @Provides-annotated method. Hilt를 이용해 개발하던 중 다음과 같은 오류가 발생했습니다. public abstract static class singletonc implements ... cannot be provided without an @Provides-annotated method. 특히 단일 모듈에서는 문제가 없었지만 기존과 다른 URL 주소와 네트워크 통신을 하기 위해 @qulifier 어노테이션을 이용해 멀티모듈로 변경하는 과정에서 버그가 발생했습니다. 의존성을 주입하는 과정에서 Hilt는 동일한 타입의 객체가 여러개 반환되는 경우에 각각의 반환 타입을 어느 객체에 주입할지 명시해 주어야 합니다. 위 이미지에서 Retrofit 객체가 반환되는 메소드가 두 개이기 때문에 @Qulifier 어노테이션을 사용해 각각의 R.. 2023. 8. 12.
[안드로이드] 커스텀 다이어로그(Custom Dialog) 모서리 흰 배경이 보이는 현상 해결방법, 좌우 여백 조절 방법 커스텀 다이어로그를 만들다 보면 가장 흔하게 겪는 두 가지 문제인 것 같습니다, 해결방법을 소개해 드리겠습니다-! 1. 모서리의 흰색 배경이 보일 때 다이어로그의 모서리를 둥글게 조절하면서 기존의 배경(background)에 흰색이 그대로 남게 되는 경우입니다. xml 파일에도 전혀 문제가 없고, xml 상의 background 속성을 이것저것 변경해 봐도 해결이 되지 않았습니다. 해결방법은 커스텀 다이어로그를 생성하는 소스코드에 해당 코드를 추가해 줍니다. dialog.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) 2. 좌우 여백이 조절되지 않을 때 xml 파일에서 좌우로 일정 여백을 차지하도록 설정하기 위해 padding, margi.. 2023. 7. 28.
728x90
반응형