이 글에서는 안드로이드(Android)에서 인텐트(Intent)를 사용해 프로그래밍 방식으로 전화를 거는 방법을 단계별로 살펴봅니다.
전화 걸기 인텐트의 기본 개념
안드로이드에서 전화 기능을 구현할 때는 주로 두 가지 인텐트 액션이 사용됩니다.
- Intent.ACTION_DIAL – 기본 다이얼러(전화) 앱을 열고 번호를 미리 채워 줍니다. 실제 발신은 사용자가 통화 버튼을 눌러야 하므로 별도의 권한이 필요하지 않습니다.
- Intent.ACTION_CALL – 사용자 확인 없이 즉시 전화를 겁니다. 매니페스트에 CALL_PHONE 권한을 선언하고 사용자 승인을 받아야 합니다.
이번 예제는 권한 처리 없이 간편하게 사용할 수 있는 ACTION_DIAL 방식으로 구현합니다. 버튼을 누르면 지정된 전화번호가 입력된 다이얼러 화면이 열립니다.
구현 단계
1단계 – 새 프로젝트 만들기
Android Studio에서 File ⇒ New Project를 선택하고, 프로젝트 생성에 필요한 정보를 모두 입력해 새 프로젝트를 만듭니다.
2단계 – 레이아웃 작성 (res/layout/activity_main.xml)
아래 코드를 activity_main.xml에 추가합니다. 화면에는 전화 걸기를 실행할 Call 버튼 하나가 배치되며, 버튼의 onClick 속성은 곧 작성할 call() 메서드와 연결됩니다.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="16dp"
tools:context=".MainActivity">
<Button
android:onClick="call"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Call" />
</RelativeLayout>
3단계 – MainActivity 코드 작성 (src/MainActivity.java)
아래 코드를 MainActivity에 추가합니다. call() 메서드는 ACTION_DIAL 인텐트를 생성하고, setData()로 tel: 스키마와 전화번호를 지정한 뒤 startActivity()를 호출해 다이얼러를 실행합니다. 전화번호는 원하는 번호로 언제든 바꿔 사용할 수 있습니다.
package app.tutorialspoint.com.sample;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void call(View view) {
Intent dialIntent = new Intent(Intent.ACTION_DIAL);
dialIntent.setData(Uri.parse("tel:" + "8072223081"));
startActivity(dialIntent);
}
}
4단계 – AndroidManifest.xml 설정
매니페스트 파일에 아래와 같이 액티비티를 등록합니다. 참고로 ACTION_DIAL 방식은 권한이 필요하지 않지만, 즉시 발신하는 ACTION_CALL을 사용하려면 CALL_PHONE 권한 선언이 반드시 필요합니다.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
package="app.tutorialspoint.com.sample">
<uses-permission android:name="android.permission.CALL_PHONE" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
앱 실행 및 결과 확인
이제 애플리케이션을 실행해 보겠습니다. 실제 안드로이드 스마트폰이 컴퓨터에 연결되어 있다고 가정합니다. Android Studio에서 프로젝트의 액티비티 파일 중 하나를 열고 툴바의 Run(실행) 아이콘을 클릭하세요. 기기 목록에서 자신의 모바일 기기를 선택하면 앱이 설치·실행됩니다.
앱이 실행되면 기본 화면에 Call 버튼이 표시됩니다. 버튼을 누르면 아래 그림처럼 지정한 전화번호(8072223081)가 입력된 상태로 기본 다이얼러 앱이 열리고, 사용자가 통화 버튼을 누르면 실제 전화가 발신됩니다.

마무리 및 참고 사항
- ACTION_DIAL은 런타임 권한 요청 없이 동작하므로 구현이 간단하고 안전합니다.
- 통화까지 자동으로 연결하려면 ACTION_CALL과 CALL_PHONE 권한, 그리고 런타임 권한 승인 처리를 함께 구현해야 합니다.
- 전화번호는 tel: 뒤에 붙이며, 국제 번호는 “+82…” 형식 등으로 지정할 수 있습니다.