Android (안드로이드)

[Android] 전화 앱 연결하기 / 내 앱에서 전화걸기

Oscar:) 2025. 1. 16. 21:00
728x90

 

 

 

이번 포스팅에서는 내가 개발하는 앱에서

안드로이드 시스템 기본 앱인 전화 앱을 이용하여 전화 연결하는 방법을 알아본다.

 

 

 

 


 

 

 

2가지 방법을 소개한다.

 

첫 번째는 입력 받은 전화 번호를 가지고 전화 앱으로 이동하는 방법이고,

두 번째는 입력 받은 전화 번호로 직접 전화 연결하는 방법이다.

 

 

 

 

 

 

✅ 전화 앱으로 이동

 

앱에서 전화를 직접 연결하지 않고, 상대방의 전화번호 데이터를 가지고 전화 앱으로 이동한다.

사용자가 직접 통화 버튼을 눌러야지만 전화를 걸 수 있다.

 

직접 전화를 걸지 못해서 불편한 감도 있지만,

전화하기 전에 한 번 더 체크하는 용도를 생각하면 나름 수요 있는 방법이라고 생각한다.

 

 

 

MainActivity.kt

button.setOnClickListener {
  val phoneNumber = "tel:${bind.edittext.text}"
  val intent = Intent(Intent.ACTION_DIAL, Uri.parse(phoneNumber))
  startActivity(intent)
}

 

EditText에 전화번호를 입력 받고 버튼을 누르면 전화 앱으로 이동하는 코드다.

 

Intent를 사용하여 간단하게 구현할 수 있기에 어려운 점은 없다.

 

Intent.ACTION_DIAL 액션을 사용하고,

전화번호 문법으로는 "tel:{전화번호}" 와 같은 형식을 Uri 타입으로 작성해주면 된다.

 

 

 

 

 

 

🎈 결과

 

EditText에 전화번호를 입력하고 버튼을 누르면...

 

 

 

 

 

위 처럼 전화번호가 입력되어 있는 상태로 전화 앱이 켜진다.

 

 

 

 

 

 

✅ 앱에서 바로 전화 걸기

 

전화 앱으로 이동하는 과정을 거치지 않고 내 앱에서 바로 전화를 할 수도 있다.

 

다만 이 방법은 사용자에게 전화 권한을 요청하여 허용받아야 한다.

그렇기에 이번에도 역시 TedPermission 라이브러리 활용하여 간편하게 권한 요청을 해준다.

 

 

AndroidManifest.xml

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

<uses-feature
  android:name="android.hardware.telephony"
  android:required="false" />

 

먼저 매니페스트 파일에 CALL_PHONE 권한을 작성해주고,

uses-feature 태그도 작성해주어 전화 기능이 필수적이지 않다는 것을 명시해준다.

 

 

 

MainActivity.kt

fun checkPermission() {
  TedPermission.create()
    .setPermissionListener(object : PermissionListener {
      override fun onPermissionGranted() {
        call()
      }
      override fun onPermissionDenied(deniedPermissions: List<String>) {
        // 권한 거부 시 동작
      })
      .setDeniedMessage("권한을 허용해 주셔야\n사용 가능합니다.")
      .setPermissions(android.Manifest.permission.CALL_PHONE)
      .check()
}

 

매니페스트 파일에 선언한 권한을 요청해주고,

권한 허용 시 call() 함수를 호출해주었다.

 

 

 

MainActivity.kt

fun call() {
  val phoneNumber = "tel:${bind.edittext.text}"
  val intent = Intent(Intent.ACTION_CALL, Uri.parse(phoneNumber))
  startActivity(intent)
}

...

button.setOnClickListener {
  checkPermission()
}

 

전화 앱으로 이동하는 예제와 유사하지만, Intent의 액션을 변경해줘야 한다.

 

ACTION_DIAL  →  ACTION_CALL

 

 

 

 

 

 

🎈 결과

 

전화번호를 입력 후, 버튼을 눌러서 전화 권한을 허용해주면..!

 

 

 

 

 

전화 앱을 거치지 않고 곧바로 전화 연결되는 것을 확인할 수 있다..!

역시 앱 테스트는 엄마한테

 

 

 

참고로, 전화 앱을 거치지 않는 것은 아니고 생략된 것 처럼 보여질 뿐이다.

통화 연결 시 당연히 전화 앱을 사용한다.

 

 

 

 

 


 

 

 

 

다시 한 번 느끼지만 Intent는 전지전능하다!

 

 

 

728x90