[안드로이드 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 ]

 

 

 

 

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
» [안드로이드 Android] 시스템 인텐트(Intent)를 이용한 전화걸기, 문자보내기, 이메일보내기 etc file 졸리운_곰 2016.03.05 1099
32 Intent를 사용한 첨부파일 이메일 보내기 file 졸리운_곰 2016.03.05 2117
31 android app gmail 보내기, 안드로이드 E-Mail 보내기 예제 따라하기 file 졸리운_곰 2016.03.05 267
30 android 실행시 class not found 졸리운_곰 2016.03.04 180
29 android 부팅과 함께 app 실행 시키기. 졸리운_곰 2016.03.02 168
28 [Android] 부팅시 서비스(Service) 재실행하기 (항상 실행) 졸리운_곰 2016.03.02 347
27 안드로이드 시스템 부팅시에도 프로그램 항상 실행 (재실행) 졸리운_곰 2016.03.02 705
26 App inventor 멀티스크린, 스크린 이동, 다중화면, file 졸리운_곰 2016.02.17 779
25 Communicating with Web APIs file 졸리운_곰 2016.02.17 1080
24 JSON data on the Android mobile with App Inventor 2 file 졸리운_곰 2016.02.17 364
23 REST clients for Java, MySQL and JSON Restful Web Services file 졸리운_곰 2016.01.11 223
22 안드로이드 개발 시 참고될 만한 자료 (android reading) 졸리운_곰 2015.11.11 4299
21 14 Great Android apps that are also open source file 졸리운_곰 2015.08.19 134
20 안드로이드 오픈소스 프로젝트 리스트 file 졸리운_곰 2015.08.19 433
19 ART(Android Runtime) file 졸리운_곰 2015.08.05 343
18 2014_CodeEngn_Conference_10_안드로이드에서도_한번_후킹을_해볼까_(Hooking_on_Android)_[정광운].pdf file 졸리운_곰 2015.06.16 248
17 안드로이드 커널 레벨 후킹하기 file 졸리운_곰 2015.06.16 1022
16 Android SDK 안드로이드 소스코드 난독화 file 졸리운_곰 2015.05.31 1254
15 안드로이드 프로그래밍 강좌 모음 졸리운_곰 2015.04.14 458
14 Nexus 기기 초기화 졸리운_곰 2015.04.10 295
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED