【안드로이드 스튜디오】 앱에서 메일러를 시작하는 방법이 바뀌었기 때문에 대응했다 [Kotlin]

6203 단어 AndroidStudioKotlin
이곳의 교본을 참고로 앱에서 메일러를 기동하려고 했는데, 작동하지 않았기 때문에, 조사한 것을 메모.
[ 만들면 알 수 있다! Android 프로그래밍 Kotlin 대응 10의 실천 샘플로 배우는 Android 앱 개발 입문 ]

【환경】



Mac OS Catalina 10.15.7
Android Studio 4.0.1

【한 일】



교본에 실리고 싶은 방법은 이쪽. (문의 내용은 변경하고 있습니다)

MainActivity.kt
val subject = "${getString(R.string.app_name)}から送信します"
val text = "本文です。"
val uri = Uri.fromParts("mailto","[email protected]", null)
val intent=Intent(Intent.ACTION_SENDTO,uri)
    intent.putExtra(Intent.EXTRA_SUBJECT,subject)
    intent.putExtra(Intent.EXTRA_TEXT,text)
if(intent.resolveActivity(packageManager)!=null){
    startActivity(intent)
}

실제 기계로 실행해도 메일러를 시작할 수 없습니다 ...
조사해 보면, 같은 증상에 대해서 쓰여져 있는 분을 발견했습니다.
[ 어느새 메일러를 기동하는 Intent의 추천 형식이 바뀌어서 제목이나 본문이 입력되지 않아서 대응했다 ]

그 밖에도.

분명한 문서는 없습니다만, API29라고 할까 Android 10부터 Intent의 취급이 크게 바뀐 것 같습니다. 이 메일러는 Intent에서 쉽게 메일을 보내는 방법이므로 이전 방법과 다릅니다.
Android 앱에 mailer 호출 설정

개발자 가이드를 읽어 보면 확실히 쓰는 방법이 바뀌 었습니다.
htps : //에서 ゔぇぺぺr. 안 d로이 d. 코 m / 구이데 / 코 m 포넨 ts / 닌텐 ts - 콘몬? hl=그럼 #ゔぃえw 이런 ct

가이드를 참고로 수정한 내용이 이쪽입니다.

MainActivity.kt
val intent = Intent(Intent.ACTION_SENDTO).apply {
    data = Uri.parse("mailto:")//メールアプリのみで処理したい時に記述
    val subject = "${getString(R.string.app_name)}から送信します"
    val text = "本文です。"
    putExtra(Intent.EXTRA_EMAIL, arrayOf( "[email protected]" ))//第二引数はArrayにしないと入力されないので注意
    putExtra(Intent.EXTRA_SUBJECT, subject)
    putExtra(Intent.EXTRA_TEXT,text)
}
    if(intent.resolveActivity(packageManager)!=null) {//インテントを処理できるアプリが存在するか確認
     tartActivity(intent)//処理するアプリがいないのにstartActivityするとアプリが強制終了するので注意
}

【결과】



메일러를 시작할 수 있습니다!
( "Our Menu"는 앱 이름입니다)

좋은 웹페이지 즐겨찾기