본문 바로가기

나의 플랫폼/안드로이드

[Android] WebView 상에서 Intent Uri 실행

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

public class CustomWebViewClient extends WebViewClient {

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.startsWith("tel:")) {
Intent call_phone = new Intent(Intent.ACTION_CALL);
call_phone.setData(Uri.parse(url));
startActivity(call_phone);
} else if (url.startsWith("sms:")) {
Intent i = new Intent(Intent.ACTION_SENDTO, Uri.parse(url));
startActivity(i);
} else if (url.startsWith("intent:")) {
try {
Intent intent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME);
Intent existPackage = getPackageManager().getLaunchIntentForPackage(intent.getPackage());
if (existPackage != null) {
startActivity(intent);
} else {
Intent marketIntent = new Intent(Intent.ACTION_VIEW);
marketIntent.setData(Uri.parse("market://details?id=" + intent.getPackage()));
startActivity(marketIntent);
}
return true;
} catch (Exception e) {
e.printStackTrace();
}
} else {
view.loadUrl(cfuntion.urlValidation(url));
}

return true;
}

WebView 에서 특정 URL을 호출 할 때, shouldOverridingLoading 함수를 통해 가로챌 수가 있습니다.


이때 KakaoLink 같은 scheme를 통한 앱을 실행하고자 할 경우

위 소스에서 "intent:" 부분을 넣어주시면 됩니다.


여러 테스트를 해본 결과 위 소스가 가장 안정적인 듯 해요 ㅎ 

참고하세요.