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:" 부분을 넣어주시면 됩니다.
여러 테스트를 해본 결과 위 소스가 가장 안정적인 듯 해요 ㅎ
참고하세요.
'나의 플랫폼 > 안드로이드' 카테고리의 다른 글
[Kotlin] kotlin 프로젝트 생성 시, 참조할 만한 소스 (0) | 2017.01.11 |
---|---|
[Kotlin] let을 이용한 Null 체크 (2) | 2017.01.04 |
[Android][Kotlin] public static final -> const val (0) | 2016.12.19 |
[Android] VectorDrawable 테스트 사이트 (0) | 2016.12.15 |
[Android][펌] 안드로이드(Android 5.0) Lollipop Webview issue (0) | 2016.12.13 |