728x90

Materrial Design Bootstrap(MDB) 기반으로 코딩한 mobile Web에서 전화걸기 기능을 추가했다.

Android WebView 에서 모바일 Web을 Load하여 전화걸기 클릭을 하니까

err_unknown_url_scheme 에러 메시지를 뿌린다.


 public boolean shouldOverrideUrlLoading(WebView view, String url) {
    view.loadUrl(url);
    return true;
}

로 코드가 되어 있다.


전화걸기 tel:010-XXXX-YYYY 에 대한 예외처리 기능이 없어서 에러가 발생한 것이다.


아래와 같이 코드를 보완하고 나서 테스트하니 전화걸기가 잘 된다.

@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); // 권한 설정은 Loing.java에서 처리했음
    } else if (url.startsWith("sms:")) {
        Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.parse(url));
        startActivity(intent);
    } 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(url);
    }
    return true;
}





블로그 이미지

Link2Me

,