2010년 8월 30일 월요일

안드로이드 WebView에서 커스텀 scheme 사용하기 (Use custom scheme in WebView)


안드로이드에서는 WebView에서 링크에 tel: 같은 태그(<a href="tel:01034567890">)가 먹지 않는다. 이런 식으로 WebView가 지원하지 않는 커스텀 scheme을 지원하려면 WebViewClient를 사용하면 된다.

    private class CustomScheme extends WebViewClient {
       public boolean shouldOverrideUrlLoading(WebView view, String url) {
          ...
       }
   }

이런식으로 WebViewClient 오브젝트를 정의하고 WebView에 setWebViewClient() 메소드를 사용해 등록해 주면 된다. 그러면 WebView에 있는 링크가 클릭될 때 마다 WebViewClient 오브젝트의 shouldOverrideUrlLoading() 메소드가 호출된다.

  WebView wv = (WebView)findViewById(R.id.myWebView);
  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;






댓글 없음:

댓글 쓰기