728x90
안녕하세요! 이번 시간에는 인텐트를 활용해 이메일을 보내는 기능을 만들어보겠습니다.
구현은 안드로이드 버전 28에서 진행했습니다.
먼저 레이아웃을 만들어줍니다.
activity_send_mail.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".SendMailActivity">
<EditText
android:id="@+id/edt_input"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:layout_marginTop="150dp"
android:hint="메일 본문을 작성해주세요"
android:imeOptions="actionDone"
android:inputType="textMultiLine"
app:layout_constraintBottom_toTopOf="@id/btn_send"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_chainStyle="packed" />
<Button
android:id="@+id/btn_send"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="확인"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/edt_input" />
</androidx.constraintlayout.widget.ConstraintLayout>
다음으로, 기능의 핵심이 되는 메일 전송 메소드를 만들어줍니다.
스틱코드에서 간편하고 빠르게 메소드 코드를 가져오실 수 있습니다.
[AOS][Kotlin] 인텐트 활용하기 - Stickode
// 메일 전송 메소드
@SuppressLint("QueryPermissionsNeeded")
private fun sendEmail(content: String) {
val emailAddress = "stickode@gmail.com"
val title = "메일 제목입니다"
val intent = Intent(Intent.ACTION_SENDTO) // 메일 전송 설정
.apply {
type = "text/plain" // 데이터 타입 설정
data = Uri.parse("mailto:") // 이메일 앱에서만 인텐트 처리되도록 설정
putExtra(Intent.EXTRA_EMAIL, arrayOf(emailAddress)) // 메일 수신 주소 목록
putExtra(Intent.EXTRA_SUBJECT, title) // 메일 제목 설정
putExtra(Intent.EXTRA_TEXT, content) // 메일 본문 설정
}
if (intent.resolveActivity(packageManager) != null) {
startActivity(Intent.createChooser(intent, "메일 전송하기"))
} else {
Toast.makeText(this, "메일을 전송할 수 없습니다", Toast.LENGTH_LONG).show()
}
}
액티비티의 onCreate에서 버튼을 눌렀을 때 sendEmail 메소드가 호출될 수 있게 해줍니다.
뷰 바인딩을 사용하여 뷰를 참조했습니다. findViewById를 사용하셔도 됩니다.
val binding = ActivitySendMailBinding.inflate(layoutInflater)
binding.btnSend.setOnClickListener { // '메일 전송' 버튼 클릭 시 메일 전송하기
sendEmail(binding.edtInput.text.toString())
}
액티비티의 전체 코드는 다음과 같습니다.
import android.annotation.SuppressLint
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import com.example.stickode.databinding.ActivitySendMailBinding
class SendMailActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val binding = ActivitySendMailBinding.inflate(layoutInflater)
setContentView(binding.root)
binding.btnSend.setOnClickListener { // '메일 전송' 버튼 클릭 시 메일 전송하기
sendEmail(binding.edtInput.text.toString())
}
}
// 메일 전송 메소드
@SuppressLint("QueryPermissionsNeeded")
private fun sendEmail(content: String) {
val emailAddress = "stickode@gmail.com"
val title = "메일 제목입니다"
val intent = Intent(Intent.ACTION_SENDTO) // 메일 전송 설정
.apply {
type = "text/plain" // 데이터 타입 설정
data = Uri.parse("mailto:") // 이메일 앱에서만 인텐트 처리되도록 설정
putExtra(Intent.EXTRA_EMAIL, arrayOf<String>(emailAddress)) // 메일 수신 주소 목록
putExtra(Intent.EXTRA_SUBJECT, title) // 메일 제목 설정
putExtra(Intent.EXTRA_TEXT, content) // 메일 본문 설정
}
if (intent.resolveActivity(packageManager) != null) {
startActivity(Intent.createChooser(intent, "메일 전송하기"))
} else {
Toast.makeText(this, "메일을 전송할 수 없습니다", Toast.LENGTH_LONG).show()
}
}
}
이렇게 하면 editText에 작성한 내용을 메일 본문으로 하는 메일을 전송하는 기능을 만들 수 있습니다.
'안드로이드 코틀린' 카테고리의 다른 글
[Kotlin][Android] 트렌디한 SlidingUpPanel Layout 적용하기 (0) | 2021.11.07 |
---|---|
[Kotlin][Android] Logger 라이브러리 사용하기 (0) | 2021.11.06 |
[Kotlin][Android] 리사이클러뷰 아이템 스와이프 구현하기 (0) | 2021.10.19 |
[Kotlin][Android] 안드로이드 - Radio Button, Radio Group 사용법 (0) | 2021.10.09 |
[Kotlin][Android] chip 동적 추가 삭제하기 (0) | 2021.10.07 |