Intent.EXTRA_EMAIL이받는 사람 필드를 채우지 않습니다.


89

나는 사용하려고 내 애플리케이션에서 이메일을 보내지 만 이메일의받는 사람 필드가 채워지지 않습니다. 제목이나 텍스트를 채우는 코드를 추가하면 제대로 작동합니다. To 필드 만 채워지지 않습니다.

또한 유형을 "text / plain"및 "text / html"로 변경하려고 시도했지만 동일한 문제가 발생합니다. 누구든지 제발 도와 줄 수 있습니까?

public void Email(){

    Intent emailIntent = new Intent(Intent.ACTION_SEND); 
    emailIntent.setType("message/rfc822");  //set the email recipient
    String recipient = getString(R.string.IntegralEmailAddress);
    emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL  , recipient);
    //let the user choose what email client to use
    startActivity(Intent.createChooser(emailIntent, "Send mail using...")); }

사용하려는 이메일 클라이언트는 Gmail입니다.

답변:


218

나는 당신이 통과되지 않은 생각 recipient으로array of string

그것은 같아야한다

emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL,new String[] { "someone@gmail.com" });

21
안드로이드 ... 왜 그렇게 한심해?
버그 일어날

4
ㅋㅋ ㅋㅋㅋ ㅋㅋㅋ ㅋㅋㅋ ㅋㅋㅋ ㅋㅋㅋ ㅋㅋㅋ ㅋㅋㅋ ㅋㅋㅋ ㅋㅋㅋ ㅋㅋㅋ ㅋㅋㅋ ㅋㅋㅋ ㅋㅋㅋ ㅋㅋㅋ ㅋㅋㅋ ㅋㅋㅋ ㅋㅋㅋ ㅋㅋㅋ ㅋㅋㅋ ㅋㅋㅋ android.com '.
MKJParekh

4
또한 당신이 있는지 확인 하지 하고 intent.putExtra(Intent.EXTRA_EMAIL, list.toArray()) 그것을하지 않습니다 WORK list.toArray ()을 생산하기 때문에 객체 []가 아닌 문자열 []
nikib3ro

@ kape123 이것은 작동하지만intent.putExtra(Intent.EXTRA_EMAIL, list.toArray(new String[0]))
Abtin Gramian 17.01.18

4

이것을 사용하십시오

public void Email(){
    // use this to declare your 'recipient' string and get your email recipient from your string xml file
    Resources res = getResources();
    String recipient = getString(R.string.IntegralEmailAddress);
    Intent emailIntent = new Intent(Intent.ACTION_SEND); 
    emailIntent.setType("message/rfc822");  //set the email recipient
    emailIntent.putExtra(Intent.EXTRA_EMAIL, recipient);
    //let the user choose what email client to use
    startActivity(Intent.createChooser(emailIntent, "Send mail using...")); 

``}

이것은 작동 할 것입니다 :)
이것은 안드로이드 문서가 Intent.Extra_Email-
모든 "To"수신자 이메일 주소의 문자열 배열에 대해 말하는 것 입니다.
따라서 문자열을 올바르게 공급해야합니다. 자세한 내용은 여기
http://developer.android.com/guide/components/intents-common.html#Email 및 여기 http://developer.android.com/guide/topics/resources 에서 읽을 수 있습니다. /string-resource.html 또는 ACTION_SENDTO 작업을 사용하고 "mailto :"데이터 스키마를 포함합니다. 예를 들면 :

Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.setData(Uri.parse("mailto:")); // only email apps should handle this
intent.putExtra(Intent.EXTRA_EMAIL, addresses);
intent.putExtra(Intent.EXTRA_SUBJECT, subject);
if (intent.resolveActivity(getPackageManager()) != null) {
    startActivity(intent);
}

3

Kotlin에서-Android

fun sendMail(
        activity: Activity,
        emailIds: Array<String>,
        subject: String,
        textMessage: String
    ) {


        val emailIntent = Intent(Intent.ACTION_SEND)
        emailIntent.type = "text/plain"
        emailIntent.putExtra(Intent.EXTRA_EMAIL, emailIds)
        emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject)
        emailIntent.putExtra(Intent.EXTRA_TEXT, textMessage)
        emailIntent.setType("message/rfc822")
        try {
            activity.startActivity(
                Intent.createChooser(
                    emailIntent,
                    "Send email using..."
                )
            )
        } catch (ex: ActivityNotFoundException) {
            Toast.makeText(
                activity,
                "No email clients installed.",
                Toast.LENGTH_SHORT
            ).show()
        }
    }

또한 [ val emailIntent = Intent(Intent.ACTION_SENDTO)]를 사용하여 직접 이메일 클라이언트를 호출 할 수 있습니다.

//argument of function
val subject = "subject of you email"
val eMailMessageTxt = "Add Message here"

val eMailId1 = "emailId1@gmail.com"
val eMailId2 = "emailId2@gmail.com"
val eMailIds: Array<String> = arrayOf(eMailId1,eMailId2)

//Calling function
sendMail(this, eMailIds, subject, eMailMessageTxt)

이 코드가 kotlin 개발자에게 도움이되기를 바랍니다.


2
private void callSendMeMail() {
    Intent Email = new Intent(Intent.ACTION_SEND);
    Email.setType("text/email");
    Email.putExtra(Intent.EXTRA_EMAIL, new String[] { "me@gmail.com" });
    Email.putExtra(Intent.EXTRA_SUBJECT, "Feedback");
    startActivity(Intent.createChooser(Email, "Send mail to Developer:"));
}

이 작업을 수행 할 수있는 앱이 없다는 뜻입니다.
Abu Nayem

1

몇 가지 :

1-액션 상수 변수를 ACTION_SENDTO로 설정해야합니다.
Intent intentEmail = new Intent(Intent.ACTION_SENDTO);

2-메일로만 열려면 setData () 메서드를 사용하십시오. intentEmail.setData(Uri.parse("mailto:"));그렇지 않으면 장치에있는 다른 앱에서 텍스트, 이미지, 오디오 파일로 열도록 요청합니다.

3-이메일 ID 문자열을 문자열이 아닌 배열 객체 로 전달해야 합니다. 문자열은 "name@email.com" 입니다. 문자열의 배열 객체는 new String [] { "email1", "email2", "more_email"} 입니다.

intentEmail.putExtra(Intent.EXTRA_EMAIL, new String[] {"email@overflow.com", "abcd@stack.com"});
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.