[안드로이드 Android] 시스템 인텐트(Intent)를 이용한 전화걸기, 문자보내기, 이메일보내기 etc

 

인텐트(Intent)를 이용하여 안드로이드 시스템 액티비티들(스마트폰 개발회사가 미리 설치해 놓은 어플들)을 호출하는 예제입니다.

 

많은 시스템액티비티들 중에서 주로 많이 이용되고 있는 sms 문자보내기전화걸기이메일보내기 등의 어플들을 실행시켜보는 예제 소스입니다. 

 

 

 

메인화면                                        Dial Activity(전화번호 입력 액티비티)          Call Activity(전화걸기 액티비티)

K-56.png

 

  K-57.png

 

  K-58.png

 

 

 

 

 

SMS Activity(sms문자보내기 액티비티)      Web Page Activity(웹브라우져 액티비티)

K-59.png

 

   K-60.png

 


 

Layout 파일

 activity_main.xml

 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical" >

    

    <Button android:id="@+id/btn_dial"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:text="Start Dial Activity"

        android:onClick="mOnClick"/>

    

    <Button android:id="@+id/btn_call"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:text="Start Call Activity"

        android:onClick="mOnClick"/>

    

    <Button android:id="@+id/btn_sms"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:text="Start SMS Activity"

        android:onClick="mOnClick"/>

    

    <Button android:id="@+id/btn_webpage"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:text="Start Web Page Activity"

        android:onClick="mOnClick"/>

    

    <Button android:id="@+id/btn_email"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:text="Start E-Mail Activity"

        android:onClick="mOnClick"/>   

 

</LinearLayout>

 



소스파일

 

 MainActivity.java

 public class MainActivity extends Activity {

 

@Override

protected void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.activity_main);

}

 

    //Button 클릭시에 자동으로 호출되는 callback Method...

    public void mOnClick(View v){

    

     Intent i; //시스템액티비티를 부를 Intent 참조변수

     Uri uri;  //시스템 액티비티의 세부 종류를 구분하는 Data는 Uri객체로 제공. 이를 위한 참조변수

    

     switch( v.getId() ){

    

     case R.id.btn_dial://전화번호 Dial 입력 액티비티 

     

      uri= Uri.parse("tel:01012345678"); //전화와 관련된 Data는 'Tel:'으로 시작. 이후는 전화번호

      i= new Intent(Intent.ACTION_DIAL,uri); //시스템 액티비티인 Dial Activity의 action값

      startActivity(i);//액티비티 실행   

     

      break;

     

     case R.id.btn_call://전화걸기 화면 액티비티

     

      uri= Uri.parse("tel:01012345678"); //전화와 관련된 Data는 'Tel:'으로 시작. 이후는 전화번호

      i= new Intent(Intent.ACTION_CALL,uri); //시스템 액티비티인 Dial Activity의 action값

      startActivity(i);//액티비티 실행  

      //전화걸기 액티비티는 전화요금과 관련된 것이기에 반드시 퍼미션(permission)을 받아야 합니다.

      //메니페스트 파일에 <uses-permission android:name="android.permission.CALL_PHONE"/> 추가.

     

      break;

     case R.id.btn_sms://문자보내기 액티비티

     

      uri= Uri.parse("smsto:01012345678"); //sms 문자와 관련된 Data는 'smsto:'로 시작. 이후는 문자를 받는 사람의 전화번호

      i= new Intent(Intent.ACTION_SENDTO,uri); //시스템 액티비티인 SMS문자보내기 Activity의 action값

      i.putExtra("sms_body", "Hello...");  //보낼 문자내용을 추가로 전송, key값은 반드시 'sms_body'

      startActivity(i);//액티비티 실행   

     

      break;

     

     case R.id.btn_webpage://웹브라우저 실행

     

      uri= Uri.parse("http://www.naver.com"); //웹페이지와 관련된 Data는 'http:'으로 시작. 이후는 사이트의 URL

      i= new Intent(Intent.ACTION_VIEW, uri); //시스템 액티비티인 Dial Activity의 action값

      startActivity(i);//액티비티 실행  

      //웹페이지 액티비티는 데이터요금과 관련된 것이기에 퍼미션(permission)을 받도록 합니다.

      //메니페스트 파일에 <uses-permission android:name="android.permission.INTERNET"/> 추가.

     

      break;

 

     case R.id.btn_email://이메일 보내기

     

      uri= Uri.parse("mailto:abcd@naver.com"); //이메일과 관련된 Data는 'mailto:'으로 시작. 이후는 이메일 주소

      i= new Intent(Intent.ACTION_SENDTO, uri); //시스템 액티비티인 Dial Activity의 action값

      startActivity(i);//액티비티 실행  

      //GenyMotion 무료버전에서는 실행오류. 실제 디바이스에서는 동작됩니다.

     

      break;   

    

     }

    

    }

}

 

 

 

 전화걸기와 네트워크를 사용하기 위해서는 사용 권한(uses-permission)이 필요합니다.

여러분 프로젝트의 메니페스트 파일에 퍼미션을 추가합니다.

 

 

 AndroidManifest.xml

 <manifest xmlns:android="http://schemas.android.com/apk/res/android"

    package="com.kitesoft.systemintent"

    android:versionCode="1"

    android:versionName="1.0" >

 

    <uses-sdk

        android:minSdkVersion="14"

        android:targetSdkVersion="16" />

    

    <!-- 전화걸기 Call 액티비티 실행 퍼미션 -->

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

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

    

    <!-- 네트워크 사용 액티비티들에 대한 퍼미션 -->

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

 

    <application

        android:allowBackup="true"

        android:icon="@drawable/ic_launcher"

        android:label="@string/app_name"

        android:theme="@style/AppTheme" >

        <activity

            android:name=".MainActivity"

            android:label="@string/app_name" >

            <intent-filter>

                <action android:name="android.intent.action.MAIN" />

 

                <category android:name="android.intent.category.LAUNCHER" />

            </intent-filter>

        </activity>

    </application>

 

</manifest>

 

 

 

 

기타 시스템 액티비티들

 

// 구글맵 띄우기

Uri uri = Uri.parse("geo:38.899533,-77.036476");

Intent it = new Intent(Intent.Action_VIEW,uri);

startActivity(it);

 

 

// 구글 길찾기 띄우기

Uri uri = Uri.parse("http://maps.google.com/maps?f=d&saddr=출발지주소&daddr=도착지주소&hl=ko");

Intent it = new Intent(Intent.ACTION_VIEW,URI);

startActivity(it);  

 

// SMS/MMS 발송

Intent it = new Intent(Intent.ACTION_VIEW);   

it.putExtra("sms_body", "The SMS text");   

it.setType("vnd.android-dir/mms-sms");   

startActivity(it); 

 

// MMS 발송

Uri uri = Uri.parse("content://media/external/images/media/23");   

Intent it = new Intent(Intent.ACTION_SEND);   

it.putExtra("sms_body", "some text");   

it.putExtra(Intent.EXTRA_STREAM, uri);   

it.setType("image/png");   

startActivity(it);

 

 

// 이메일 발송 

Intent it = new Intent(Intent.ACTION_SEND);   

it.putExtra(Intent.EXTRA_EMAIL, "me@abc.com");   

it.putExtra(Intent.EXTRA_TEXT, "The email body text");   

it.setType("text/plain");   

startActivity(Intent.createChooser(it, "Choose Email Client")); 

 

 

Intent it = new Intent(Intent.ACTION_SEND);     

String[] tos = {"me@abc.com"};     

String[] ccs = {"you@abc.com"};     

it.putExtra(Intent.EXTRA_EMAIL, tos);     

it.putExtra(Intent.EXTRA_CC, ccs);     

it.putExtra(Intent.EXTRA_TEXT, "The email body text");     

it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");     

it.setType("message/rfc822");     

startActivity(Intent.createChooser(it, "Choose Email Client"));  

 

 

// extra 추가하기

Intent it = new Intent(Intent.ACTION_SEND);   

it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");   

it.putExtra(Intent.EXTRA_STREAM, "file:///sdcard/mysong.mp3");   

sendIntent.setType("audio/mp3");   

startActivity(Intent.createChooser(it, "Choose Email Client"));

 

 

// 미디어파일 플레이 하기

Intent it = new Intent(Intent.ACTION_VIEW);

Uri uri = Uri.parse("file:///sdcard/song.mp3");

it.setDataAndType(uri, "audio/mp3");

startActivity(it);

 

 

Uri uri = Uri.withAppendedPath(

  MediaStore.Audio.Media.INTERNAL_CONTENT_URI, "1");   

Intent it = new Intent(Intent.ACTION_VIEW, uri);   

startActivity(it); 

 

 

// 설치 어플 제거

Uri uri = Uri.fromParts("package", strPackageName, null);   

Intent it = new Intent(Intent.ACTION_DELETE, uri);   

startActivity(it);

 

 

// APK파일을 통해 제거하기

Uri uninstallUri = Uri.fromParts("package", "xxx", null);

returnIt = new Intent(Intent.ACTION_DELETE, uninstallUri);

 

 

// APK파일 설치

Uri installUri = Uri.fromParts("package", "xxx", null);

returnIt = new Intent(Intent.ACTION_PACKAGE_ADDED, installUri);

 

 

// 음악 파일 재생

Uri playUri = Uri.parse("file:///sdcard/download/everything.mp3");

returnIt = new Intent(Intent.ACTION_VIEW, playUri);

 

 

// 첨부파일을 추가하여 메일 보내기

Intent it = new Intent(Intent.ACTION_SEND);  

it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");  

it.putExtra(Intent.EXTRA_STREAM, "file:///sdcard/eoe.mp3");  

sendIntent.setType("audio/mp3");  

startActivity(Intent.createChooser(it, "Choose Email Client"));

 

 

// 마켓에서 어플리케이션 검색

Uri uri = Uri.parse("market://search?q=pname:pkg_name");  

Intent it = new Intent(Intent.ACTION_VIEW, uri);  

startActivity(it);  

// 패키지명은 어플리케이션의 전체 패키지명을 입력해야 합니다.

 

 

// 마켓 어플리케이션 상세 화면

Uri uri = Uri.parse("market://details?id=어플리케이션아이디");  

Intent it = new Intent(Intent.ACTION_VIEW, uri);  

startActivity(it);

// 아이디의 경우 마켓 퍼블리싱사이트의 어플을 선택후에 URL을 확인해보면 알 수 있습니다.

 

 

// 구글 검색

Intent intent = new Intent();

intent.setAction(Intent.ACTION_WEB_SEARCH);

intent.putExtra(SearchManager.QUERY,"searchString")

startActivity(intent);

 

 

[출처. http://kitesoft.tistory.com/61 ]

 

 

 

 

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
27 레이아웃이란 무엇일까요? 졸리운_곰 2016.04.30 238
26 안드로이드 네트워크/쓰레드 프로그래밍 예제 - HTTP file 졸리운_곰 2016.04.30 318
25 안드로이드 와이파이 연결시 준비된 코드 실행 졸리운_곰 2016.04.30 423
24 Broadcast Receiver로 문자(SMS) 수신해보자 file 졸리운_곰 2016.04.29 761
23 How do you get the Android's primary e-mail address (or a list of e-mail addresses)? 졸리운_곰 2016.04.29 221
22 안드로이드/Android 액티비티(Activity) 투명 처리 하기 file 졸리운_곰 2016.04.14 196
21 Audio Capture 졸리운_곰 2016.04.08 212
20 [안드로이드] 앱이 파일을 읽고 쓰는 위치 졸리운_곰 2016.03.24 879
19 안드로이드 네트워크 연결 상태 확인 졸리운_곰 2016.03.23 437
18 안드로이드 > 네트워크 연결 상태를 확인하는 ConnectivityManager 졸리운_곰 2016.03.23 652
17 [펌][안드로이드예제] 카메라로 찍은 사진(이미지파일)을 웹서버에 전송하는 프로그램예제 졸리운_곰 2016.03.12 2730
16 안드로이드 통화 녹음 소스 : android call recoder source file 졸리운_곰 2016.03.12 2118
15 안드로이드 앱 : 앱 개발시 코드에서 다른 앱 설치 및 제거 졸리운_곰 2016.03.09 295
14 [Android] 첨부파일 포함한 이메일 보내기 file 졸리운_곰 2016.03.05 911
» [안드로이드 Android] 시스템 인텐트(Intent)를 이용한 전화걸기, 문자보내기, 이메일보내기 etc file 졸리운_곰 2016.03.05 1099
12 Intent를 사용한 첨부파일 이메일 보내기 file 졸리운_곰 2016.03.05 2117
11 android app gmail 보내기, 안드로이드 E-Mail 보내기 예제 따라하기 file 졸리운_곰 2016.03.05 267
10 android 실행시 class not found 졸리운_곰 2016.03.04 180
9 android 부팅과 함께 app 실행 시키기. 졸리운_곰 2016.03.02 168
8 [Android] 부팅시 서비스(Service) 재실행하기 (항상 실행) 졸리운_곰 2016.03.02 347
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED