안드로이드

[안드로이드] WebView 전화걸기 기능 구현

http://portfolio.wonpaper.net 2022. 11. 18. 00:25

WebView 가 올려진 하이브리드앱상에서 전화 바로걸기 기능을 구현해 본다.

 

1. AndroidManifest.xml 에서 아래의 권한 소스를 추가한다.

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

CALL_PHONE  은 전화 바로 걸기

DIAL_PHONE  은 전화걸기전 전화번호가 표시된상태로 나오는 형태 -> 통화버튼을 누르면 통화가 된다.

 

2. MainActivity.java 소스내

 

HTML 코드상에서 <a href="tel:010-123-4567"> 형태로 나오는 부분을 클릭시

아래의 오버라이드한 shouldOverrideUrlLoading() 함수부분중에서 

 

Intent call_phone = new Intent(Intent.ACTION_CALL); 처럼 인텐트 처리를 한다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
      @Override
        public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
            //Log.d("WebViewClient URL : ", request.getUrl().toString());
            //view.loadUrl(request.getUrl().toString());
            String url = request.getUrl().toString();
            if (url.startsWith("tel:")) {
 
                if (checkSelfPermission(Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
                    Toast.makeText(getApplicationContext(),"전화걸기 권한을 승인해 주셔야 정상적인 서비스가 가능합니다.",Toast.LENGTH_SHORT).show();
                    return true;
                }
                Intent call_phone = new Intent(Intent.ACTION_CALL);
                call_phone.setData(Uri.parse(url));
//                call_phone.addCategory("android.intent.category.BROWSABLE");
//                call_phone.setComponent(null);
//                call_phone.setSelector(null);
                startActivity(call_phone);
 
            }
            return true;
 
       }
 
cs