android webview url 가로채기 / 네이티브에서 작업 | android

2016.01.05 17:16mobile/android


shouldOverrideUrlLoading 사용 예제이다.

 


tel:, sms: 등은 모바일브라우저에서 정상작동한다.

하지만 webview에서는 작동하지 않는다


그렇게 때문에 페이지전환 전에 url을 가로채서 전화, 문자, 파일다운로드 구현하였다.



웹에서 a태그에 tel:, sms: 또는 ~.hwp 등으로 끝나는 url 캐치해서 네이티브에서 실행

ex) 

<a href="tel:15441544">전화상담</a>
<a href="sms:#11109090">문자상담</a>
<a href="/download/pdf/test.pdf" target="_blank">PDF 다운로드</a>
 
cs



 

webview가 있는 onCreate 내부에 작성

private WebView _webview;
 
_webview = (WebView)findViewById(R.id.webview);
 
_webview.setWebViewClient(new WebViewClient(){
 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url){
        String ext = url.substring(url.lastIndexOf(".")+1);
        if(ext.equals("pdf"|| ext.equals("doc"|| ext.equals("xls"|| ext.equals("hwp")){
            Uri uri = Uri.parse(url);
            startActivity(new Intent(Intent.ACTION_VIEW, uri));
        }else if (url.startsWith("tel:")) {
            Intent i = new Intent(Intent.ACTION_CALL, Uri.parse(url));
            startActivity(i);
            return true;
        } else if (url.startsWith("sms:")) {
            url = url.replace("sms:""");
            Intent sendIntent = new Intent(Intent.ACTION_VIEW);
            sendIntent.putExtra("address", url);
            sendIntent.setType("vnd.android-dir/mms-sms");
            startActivity(sendIntent);
            return true;
        } 
        return true;
    }
 
    @Override
    public void onPageFinished(WebView view, String url){
    }
});
 
cs