implementation “com.kakao.sdk:v2-link:2.4.2” 사용중이고 targetSdkVersion 29 입니다.
Fatal Exception: java.lang.UnsupportedOperationException
at com.kakao.sdk.common.util.KakaoCustomTabsClient.openWithDefault(KakaoCustomTabsClient.kt:39)가 발생하는데 왜 발생하는지 궁금합니다.
다른 기기에서는 에러난 적이 없으나 android 9에서 한번 발생했습니다.
val url = TalkApiClient.instance.channelChatUrl(getString(R.string.kakao_channel_id))
KakaoCustomTabsClient.openWithDefault(this, url)
입니다!
해당 기능은 디바이스에 기본 브라우저로 설정된 인터넷 브라우저를 통해 카카오 링크를 사용하는데요,
이슈가 발생한 디바이스에 인터넷 브라우저 (ex: Chrome, Samsung 브라우저, Naver, Daum …)가 설치되어 있지 않아서 발생한 것으로 추측됩니다.
인터넷 브라우저를 설치 후 기본 브라우저로 설정하거나, 기본 내장된 Chrome 브라우저 사용 안함 상태를 사용함으로 변경해주시면 정상 작동할 것 같습니다.
1개의 좋아요
이부분 저도 일어나는데 파이어베이스 크래시 리포트로 유저걸로 집계됩니다
사용자에게
인터넷 브라우저를 설치 후 기본 브라우저로 설정하거나, 기본 내장된 Chrome 브라우저 사용 안함 상태를 사용함으로 변경해주시면 정상 작동할 것 같습니다.
이렇게 안내할수 없는 부분인데 별도로 처리 필요하지않을까요?
안녕하세요!
KakaoCustomTabsClient.openWithDefault()
는 디바이스 내 설치된 크롬 브라우저를 통해 매개변수로 전달받은 uri에 접근하도록 구현된 메소드입니다.
따라서 크롬 브라우저가 없는 경우 UnsupportedOperationException
를 throw 하도록 구현되어있습니다.
KakaoDevelopers 상의 가이드에는 해당 내용에 대한 언급이 없어서 V2 SDK를 사용하는 분들에게 혼동을 드린 것 같습니다.
말씀주신 내용 반영해서 샘플 코드 업데이트하겠습니다.
감사합니다.
1개의 좋아요
val url = TalkApiClient.instance.channelChatUrl(getString(R.string.kakao_channel_id))
// 1. 크롬 브라우저로 실행하는 경우
try {
KakaoCustomTabsClient.openWithDefault(context, url)
} catch (e: UnsupportedOperationException) {
Toast.makeText(context, "크롬 브라우저가 없습니다", Toast.LENGTH_SHORT).show()
}
// 2 .디바이스에 설치된 인터넷 브라우저로 실행하는 경우
try {
KakaoCustomTabsClient.openWithDefault(context, url)
} catch (e: ActivityNotFoundException) {
Toast.makeText(context, "디바이스에 설치된 인터넷 브라우저가 없습니다", Toast.LENGTH_SHORT).show()
}
참고하시라고 간단한 예제 코드 공유드립니다.
1, 2 중에 원하는 방식으로 구현하시면 됩니다.
감사합니다.