안드로이드에선 Intent를 사용해 다른 앱으로 데이터를 전달하며 앱을 실행한다. 구글에서 필수적인 Intent의 구조는 미리 정의를 해뒀는데, 메일 보내는 것도 그 중 하나이다.
developer.android.com/reference/android/content/Intent
Intent | Android 개발자 | Android Developers
developer.android.com
첨부파일 없이 메일을 보낼 땐 아래와 같이 보내면 된다. 메일 앱이 실행된다.
val uri = Uri.parse("mailto:no-reply@mail.com")
val intent = Intent(Intent.ACTION_SENDTO, uri)
intent.putExtra(Intent.EXTRA_SUBJECT, "안녕하세요 메일 제목입니다")
intent.putExtra(Intent.EXTRA_TEXT, "안녕하세요, 메일 내용 입니다.")
파일을 첨부할 땐 위의 intent에 EXTRA_STREAM를 추가하면 될 것 같았는데 안된다.
파일을 첨부하려면
Intent의 action을 ACTION_SEND로 변경하고
메일 주소는 extra_email로 넘기는데 array여야 한다
파일 접근에 권한이 필요한 경우 읽기 권한을 부여하고
extra_stream으로 첨부 파일의 URI를 넘긴다
val intent = Intent(Intent.ACTION_SEND)
intent.putExtra(Intent.EXTRA_SUBJECT, "메일 제목")
intent.putExtra(Intent.EXTRA_EMAIL, arrayOf("no-reply@mail.com"))
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.putExtra(Intent.EXTRA_STREAM, fileUri)
아무리 생각해도 ACTION_SENDTO에 파일 첨부가 안되는게 이상하다....
'개발 > 안드로이드' 카테고리의 다른 글
코틀린에서 const val 과 val 차이 (0) | 2021.02.21 |
---|---|
앱 설치/업데이트 시간 가져오기 (0) | 2021.02.03 |
안드로이드 fingerprint 확인 (0) | 2020.12.03 |
나이트 모드의 현재 상태 확인하는 방법 두가지 (0) | 2020.11.24 |
안드로이드 위젯 크기 결정 로직의 문제들 (2) | 2020.02.02 |
댓글