본문 바로가기
개발 이야기/Android

[Android] WebView에서 URI가 Intent Schema 인 경우 웹사이트 로딩하기

by _ppuing 2022. 5. 19.
반응형

웹뷰에서 보여 줄 사이트 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 {
        	// ... 다른 스키마인 경우 처리 
        }
    }
}
반응형

댓글