반응형
웹뷰에서 보여 줄 사이트 URI가 Intent Scheme 인 경우가 있다. 이 경우 URL은 intent://blah.blah 처럼 내려오게 되는데, 브라우저에서 식별 가능한 URL이 아니기 때문에 해당 URI를 브라우저가 이해할 수 있는 URL로 아래 코드 처럼 변환해줘야 한다.
// WebViewClient
// webViewClient = object : WebViewClient() { } 안에 아래 오버라이딩 함수 정의
override fun shouldOverrideUrlLoading(view: WebView?, request: WebResourceRequest?): Boolean {
request?.url?.let { uri ->
if (uri.toString().startsWith("intent:") {
val webviewIntent = Intent.parseUri(uri.toString(), Intent.URI_INTENT_SCHEME)
val existPackage = packageManager.getLaunchIntentForPackage(weviewIntent.getPackage()!!)
if (existPackage != null) {
startActivity(webviewIntent)
} else {
// go to market
val marketIntent = Intent(Intent.ACTION_VIEW)
marketIntent.data = Uri.parse("market://details?id=" + webviewIntent.getPackage()!!)
startActivity(marketIntent)
}
} else {
// ... 다른 스키마인 경우 처리
}
}
}
반응형
댓글