안드로이드에서는 WebView에서 링크에 tel: 같은 태그(<a href="tel:01034567890">)가 먹지 않는다. 이런 식으로 WebView가 지원하지 않는 커스텀 scheme을 지원하려면 WebViewClient를 사용하면 된다.
private class CustomScheme extends WebViewClient {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
...
}
}
public boolean shouldOverrideUrlLoading(WebView view, String url) {
...
}
}
이런식으로 WebViewClient 오브젝트를 정의하고 WebView에 setWebViewClient() 메소드를 사용해 등록해 주면 된다. 그러면 WebView에 있는 링크가 클릭될 때 마다 WebViewClient 오브젝트의 shouldOverrideUrlLoading() 메소드가 호출된다.
WebView wv = (WebView)findViewById(R.id.myWebView);
wv.setWebViewClient(new CustomScheme());
wv.setWebViewClient(new CustomScheme());
shouldOverrideUrlLoading() 메소드가 호출될 때 클릭된 링크의 url 스트링이 argument로 넘겨지기 때문에 url중에서 scheme 부분을 비교해서 원하는 동작을 하도록 해 주면 된다.
if (url.startsWith("tel:")) {
Intent i = new Intent(Intent.ACTION_CALL, Uri.parse(url));
startActivity(i);
return true;
}
return false;
Intent i = new Intent(Intent.ACTION_CALL, Uri.parse(url));
startActivity(i);
return true;
}
return false;
댓글 없음:
댓글 쓰기