새소식

mobile/🦖 Android

[Android] 웹뷰, 웹앱에서 confirm, tel 등이 되도록 만드는 방법

728x90

안녕하세요. 팀드모네입니다.

오늘은 웹뷰, 웹앱에서 confirm, tel 등이 되도록 만드는 방법에 대해서 공유드리겠습니다.

 

1. 권한 체크

AndroidManifest.xml에 CALL_PHONE 권한이 있는지 체크

<uses-permission android:name="android.permission.CALL_PHONE"/>

 

2. shouldOverrideUrlLoading을 기술했는지 체크

mWebView.loadUrl("https://xn--vf4b17jsctv.com/index.html?isApp=true"); // 웹뷰에 표시할 웹사이트 주소, 웹뷰 시작
mWebView.setWebViewClient(new WebViewClient() {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (url.startsWith("kakaolink:") || url.startsWith("market:")) {
            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
            startActivity(intent);

            return true;
        }if (url.startsWith("tel:") || url.startsWith("tel:")) {
            Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse(url));
            //전화거는 화면까지만 이동 시킬꺼면 Intent.ACTION_DIAL
            //전화를 바로 걸라면 Intent.ACTION_CALL
            startActivity(intent);
        }else {
            view.loadUrl(url);
        }
        return true;
    }
});

mWebView.setWebChromeClient(new WebChromeClient() {
    @Override
    public boolean onJsConfirm(WebView view, String url, String message, final JsResult result) {
        new AlertDialog.Builder(view.getContext())
                .setTitle("title")
                .setMessage(message)
                .setPositiveButton(android.R.string.ok,
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int which) {
                                result.confirm();
                            }
                        })
                .setNegativeButton(android.R.string.cancel,
                        new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                result.cancel();
                            }
                        })
                .setCancelable(false)
                .create()
                .show();
        return true;
    }
});

 

3. 결과 확인

결과를 확인합니다. 저는 이런식으로 나오네요.

 

이 포스팅은 페이스북의 audience-network를 기준으로 작성되었습니다.

Facebook 광고 좀 띄우겠다고 페북공식 github에서 코드받아왔다가 당황했네요 ㅠㅠ

URL : https://github.com/fbsamples/audience-network

 

블로그 방문해주셔서 감사합니다.

잘 해결되었기를 기원합니다. 추가로 질문사항이 있으면 댓글 남겨주세요 :)

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.