웹뷰에서 카카오링크 인텐트를 캐치하여 별도로 톡을 실행하는 코드가 어떻게 되나요?
말씀해주신 예외 기준으로는 아마 아래와 같은 방식으로 shouldOverrideUrlLoading()에서 intent:kakaolink://send 로 들어오는 요청을 캐치하여 startActivity를 하고 계실 것 같아요.
override fun shouldOverrideUrlLoading(view: WebView?, request: WebResourceRequest?): Boolean {
if (request.url.toString().startsWith("intent:")) {
val url = request.url.toString().substring(7)
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
startActivity(intent)
return true
}
return super.shouldOverrideUrlLoading(view, request)
}
이 때 톡이 설치되어있지 않은 경우에 ActivityNotFoundException 이 발생하기 때문에 아래와 같이 예외를 잡아주시고 개발자님의 별도 처리를 해주셔야할 것 같아요.
override fun shouldOverrideUrlLoading(view: WebView?, request: WebResourceRequest?): Boolean {
if (request?.url.toString().startsWith("intent:")) {
val url = request?.url.toString().substring(7)
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
try {
startActivity(intent)
} catch (e: ActivityNotFoundException) {
Log.e("activityNotFound", e.toString())
}
return true
}
return super.shouldOverrideUrlLoading(view, request)
}
Intent 를 잡는 방식은 제가 간단하게 구현한 것이고 이 부분은 개발자님이 더 좋은 로직으로 개발해 주시면 될 것 같고 try catch 부분만 추가해 주시면 됩니다! 이 방식으로도 해결이 안되면 또 댓글 달아주세요