웹뷰를 통해서 개발하다가 보니, Intent로 시작하는 Url 을 처리하지 못하게 되었다.
예를 들자면 아래와 같은 intent가 웹뷰 url로 날아오는데
intent://join#Intent;scheme=kakaoopen;package=com.kakao.talk;end
위를 처리해 주기 위해서는
1. Intent.parseUri를 통해서 uri를 변환시켜줘야 한다
2. 이걸 사용할 패키지가 있는지 확인한다
3. 만약 패키지가 있다면 액티비티를 실행시킨다
val intent = Intent.parseUri(request.url.toString(), Intent.URI_INTENT_SCHEME)
if (intent.resolveActivity(packageManager) != null) {
startActivity(intent)
return true
}
만약 Fallback Url이 있다면 웹뷰로 다시 로딩 한다
val fallbackUrl = intent.getStringExtra("browser_fallback_url")
if (fallbackUrl != null) {
view.loadUrl(fallbackUrl)
return true
}
이렇게 처리를 해주었다.
위 코드들은 WebView의 shouldOverrideUrlLoading 메서드 아래에 작성된 코드들이다
자세한 사항은 아래를 참고하였다.
728x90
최근댓글