- 전체
- android studio
- Android SDK
- Android NDK
- Android ADK
- Android Etc. Lib.
- Android dalvik VM
- Android 보안
- PhoneGap
- AOSP 개발
- MIT App Inventor 2
- kivy (python)
- ionic framework
- Kotlin (코틀린)
- React Native
Android SDK Intent를 사용한 첨부파일 이메일 보내기
2016.03.05 22:55
Intent를 사용한 첨부파일 이메일 보내기
by 쌤 posted Apr 01, 2012
안드로이드의 Intent를 사용하면 다른 어플리케이션들의 기능을 빌려서 사용할 수 있습니다. 전화걸기라던가 이메일발송, 카메라와 갤러리 호출등이 바로 그런 것입니다.
이번에는 안드로이드의 Intnet를 사용하여 이메일 보내기와 이메일에 파일을 첨부하는 방법을 소개해 보고자 합니다.
우선 Intent.ACTION_SEND라는 Action값을 사용하여 Intent를 만듭니다. 그런 후에 이 Intent에 type과 Extra를 추가하면 됩니다.
추가해 줄 type값은 text이메일을 의미하는 "plain/text"입니다.
아래의 소스를 보면 tos라는 배열을 통해서 수신인의 메일 주소를 지정합니다. 수신인이 여러명일 경우 이 배열의 값을 증가시키면 동시에 여러명에서 메일을 발송할 수 있습니다.
수신인의 메일 주소는 Intent.EXTRA_EMAIL 이라는 이름으로 Extra를 추가합니다.
메일의 제목과 본문은 각각 Intent.EXTRA_SUBJECT와 Intent.EXTRA_TEXT라는 이름으로 추가합니다.
동일한 기능을 하는 프로그램이 여러개 설치되어 있을 경우, 안드로이드는 사용자에게 어떤 프로그램을 통해서 수행할 것인지를 묻기 때문입니다.
SD카드의 root 디렉토리에 test.jpg라는 이미지 파일을 배치해 두었습니다.
또한 SD카드의 경로를 얻기 위해서 Enviroment API를 사용하였으며, WRITE_EXTERNAL_STORAGE 퍼미션을 부여했습니다.
이번에는 안드로이드의 Intnet를 사용하여 이메일 보내기와 이메일에 파일을 첨부하는 방법을 소개해 보고자 합니다.
이메일 발송하기
Intent를 사용하여 이메일을 보내는 방법에는 몇가지가 있습니다만, 그중에서 제가 개인적으로 테스트한 방법중에서는 다음의 방법이 가장 확장성이 좋았습니다.우선 Intent.ACTION_SEND라는 Action값을 사용하여 Intent를 만듭니다. 그런 후에 이 Intent에 type과 Extra를 추가하면 됩니다.
추가해 줄 type값은 text이메일을 의미하는 "plain/text"입니다.
아래의 소스를 보면 tos라는 배열을 통해서 수신인의 메일 주소를 지정합니다. 수신인이 여러명일 경우 이 배열의 값을 증가시키면 동시에 여러명에서 메일을 발송할 수 있습니다.
수신인의 메일 주소는 Intent.EXTRA_EMAIL 이라는 이름으로 Extra를 추가합니다.
메일의 제목과 본문은 각각 Intent.EXTRA_SUBJECT와 Intent.EXTRA_TEXT라는 이름으로 추가합니다.
Intent it = new Intent(Intent.ACTION_SEND);
it.setType("plain/text");
// 수신인 주소 - tos배열의 값을 늘릴 경우 다수의 수신자에게 발송됨
String[] tos = { "hoya4232@naver.com" };
it.putExtra(Intent.EXTRA_EMAIL, tos);
it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");
it.putExtra(Intent.EXTRA_TEXT, "The email body text");
startActivity(it);
파일 첨부하기
파일을 첨부하기 위해서는 이메일을 발송하기 위한 Intent에 Intent.EXTRA_STREAM라는 이름으로 첨부할 파일의 URI값을 지정해 주면 됩니다.// 파일첨부 it.putExtra(Intent.EXTRA_STREAM, fileUri);
전체 소스코드
테스트 예제에서는 화면에 버튼을 하나 놓고 버튼이 눌러졌을 때 파일을 첨부한 이메일을 발송하는 메일 클라이언트 프로그램을 구동하도록 되어 있습니다.동일한 기능을 하는 프로그램이 여러개 설치되어 있을 경우, 안드로이드는 사용자에게 어떤 프로그램을 통해서 수행할 것인지를 묻기 때문입니다.
SD카드의 root 디렉토리에 test.jpg라는 이미지 파일을 배치해 두었습니다.
또한 SD카드의 경로를 얻기 위해서 Enviroment API를 사용하였으며, WRITE_EXTERNAL_STORAGE 퍼미션을 부여했습니다.
package kr.pe.hoyanet.sendfileex;
import java.io.File;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class SendFileExActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 버튼 객체
Button btEmail = (Button) findViewById(R.id.btEmail);
// 전송할 파일의 경로
String szSendFilePath = Environment.getExternalStorageDirectory()
.getAbsolutePath() + "/test.jpg";
File f = new File(szSendFilePath);
if (!f.exists()) {
Toast.makeText(this, "파일이 없습니다.", Toast.LENGTH_SHORT).show();
}
// File객체로부터 Uri값 생성
final Uri fileUri = Uri.fromFile(f);
/** 첨부파일 이메일 보내기 */
btEmail.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent it = new Intent(Intent.ACTION_SEND);
it.setType("plain/text");
// 수신인 주소 - tos배열의 값을 늘릴 경우 다수의 수신자에게 발송됨
String[] tos = { "hoya4232@naver.com" };
it.putExtra(Intent.EXTRA_EMAIL, tos);
it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");
it.putExtra(Intent.EXTRA_TEXT, "The email body text");
// 파일첨부
it.putExtra(Intent.EXTRA_STREAM, fileUri);
startActivity(it);
}
});
}
}
이 예제의 전체 소스코드는 다음의 링크를 클릭하시기 바랍니다.
SendFileEx.zip
[출처] http://itpaper.co.kr/?mid=android&document_srl=2232&listStyle=viewer
본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
댓글 0
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
|---|---|---|---|---|
| 2 | Android : Keystore 정보확인 및 패스워드 변경 | 졸리운_곰 | 2017.03.23 | 235 |
| 1 |
넥서스5 USB to PC 연결 뒤 아무것도 안 보인다면
| 졸리운_곰 | 2016.04.18 | 732 |

