Please Enable JavaScript!
Gon[ Enable JavaScript ]

Android - 프로그램에서 전화걸기

안드로이드 개발

안드로이드(Android) - 프로그램에서 전화걸기


이번 예제는 전화기 자판으로 전화를 거는 것이 아니라 안드로이드 프로그램 내에서

전화거는 방법에 대한 소스이다. 기술적으로 아주 간단하며 프로그램내에 전화걸수 있는

기능을 삽입할수 있다.

 

화면은 전화번호를 입력할수 있는 에디터 박스와 전화걸리 버튼으로 아주 심플하게

이루어져 있다. 최대한 기능에 대한 소스만 집어넣어 파악하기 쉽도록 하기 위함이다.

전체소스는 다음과 같다
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;

public class Main extends Activity {
	EditText mEdtNumber = null;
	LinearLayout mLinearLayout = null;
	Button mButton_dial = null;

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		mLinearLayout = new LinearLayout(this);

		mEdtNumber = new EditText(this);
		mEdtNumber.setText("010-5552-5487");
		mLinearLayout.addView(mEdtNumber);

		mButton_dial = new Button(this);
		mButton_dial.setText("전화걸기");
		mLinearLayout.addView(mButton_dial);
		// 버튼 이벤트 
		mButton_dial.setOnClickListener(new View.OnClickListener() {
			public void onClick(View v) {
				performDial();
			}
		});

		setContentView(mLinearLayout);
	}

	public boolean onKeyDown(int keyCode, KeyEvent event) {
		if (keyCode == KeyEvent.KEYCODE_CALL) {
			performDial();
			return true;
		}
		return false;
	}
	/** 전화걸기 실행 함수 */
	public void performDial() {
		if (mEdtNumber != null) {
			try {
				startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:" 
						+ mEdtNumber.getText())));
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}
}

여기서의 핵심은 암시적 인텐드를 시스템 디바이스에 요청하는 것이다.

startActivity 인자로 의도하는 인텐드 객체를 넘겨주면 된다
startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:" 
			+ mEdtNumber.getText())));

그림에서 전화걸기 버튼을 클릭하게 되면 바로 전화를 걸게 된다. 에뮬레이터에서 전화가

걸릴리가 없다. Log Chat 에서는 다음과 같은 에러를 뱉어낸다
android

다른 인텐드 옵션인 ACTION_DIAL 휴대폰 다이얼패스에서 전화거는 것과 같은

프로그램을 띄워준다. 화면에서 입력한 값이 전달되어 자동으로 들어가게 되고

startActivity(new Intent(Intent.ACTION_DIAL, Uri.parse("tel:" 
						+ mEdtNumber.getText())));

바로 전화걸수 있는 다이얼 패드가 화면에 나타나게 된다.

인텐드 명령의 종류에 따라 여러가지를 수행하게 되는데 음악, 동영상을 실행한다던지 구글맵을

다운받는 등의 일을 알아서 수행하게 된다. 구글에서 제공하는 암시적 인텐드의 종류는 다음과

같다.

상세한 내용은 다음 URL 에서 확인해볼수 있다.

http://developer.android.com/guide/appendix/g-app-intents.html

표에서 정리된 예제는 하나씩 구현해 나갈 생각이다
Posted by 녹두장군

댓글을 달아 주세요

  1. jynls 2010.03.23 16:32  댓글주소  수정/삭제  댓글쓰기

    (좋은 글 감사합니다.)

    소스대로 똑같이 했다가

    누가 전화 받아서

    깜딱

    놀랐습니다. !!! ^^

    • 녹두장군(주인장) 2010.03.23 20:54  댓글주소  수정/삭제

      도움이 되었다니 저 또한 기쁘네요
      즐거운 저녁 되세요

  2. 예영파피 2010.06.08 14:23  댓글주소  수정/삭제  댓글쓰기

    좋은 정보 잘보았습니다. 담아갑니다.

    • 녹두장군 2010.06.09 23:07  댓글주소  수정/삭제

      감사합니다..더위가 이제 우리곁으로 가가이 다가 온거 같네요
      건강조심하시구요

  3. Favicon of http://cyworld.com/sands000 ljh 2011.04.13 01:12  댓글주소  수정/삭제  댓글쓰기

    좋은 내용 퍼갑니다^^ 양해 부탁드려요 ㅠ

  4. 하늘한번보고 2012.10.26 10:35  댓글주소  수정/삭제  댓글쓰기

    좋은 정보 감사합니다.

    • 녹두장군 2012.10.28 09:02  댓글주소  수정/삭제

      네 도움이 되었다니 제가 고맙네요
      요즘 프로젝트로 바빠서 안드 관련 아티클을 쓰지 못해
      많이 아쉽네요
      어제 비가 오고 난후 많이 쌀쌀해 졌네요
      감기 조심하세요