2015-05-13 1 views
1

У меня есть код в моем приложении, который позволяет пользователю отправлять электронное письмо разработчику. Предполагается, что оно должно заполнить поле To, поле Subject и поле body. Но когда я бегу, он заполняет To, но игнорирует другие EXTRA, такие как текст Subject, Body и Chooser. Я наблюдаю это поведение на двух тестовых устройствах: один работает Lollipop (Verizon Samsung Galaxy Note 4) и один работает Jelly Bean 4.2.2 (Samsung Fascinate на CM10.1, хотя я не знаю, имеет ли это отношение к проблеме .Android ACTION_SEND намерение не заполняется Тема или тело

private void sendHelpEmail() { 
    Intent email = new Intent(Intent.ACTION_SEND, Uri.parse("mailto:")); 
    // prompts email clients only 
    email.setType("message/rfc822"); 

    email.putExtra(Intent.EXTRA_EMAIL, new String[] {getString(R.string.about_email)}); 
    email.putExtra(Intent.EXTRA_SUBJECT, getString(R.string.login_help_subject)); 
    email.putExtra(Intent.EXTRA_TEXT, getString(R.string.login_help_body, classButton.text(), Txt_Student.getText().toString())); 

    try { 
     // the user can choose the email client 
     startActivity(Intent.createChooser(email, getString(R.string.login_help_chooser))); 
     } catch (android.content.ActivityNotFoundException ex) { 
      Toast.makeText(mThis, R.string.login_help_error, Toast.LENGTH_LONG).show(); 
     } 
} 

Почему Subject и тела игнорируются, когда к электронной почте населен?

+0

Интересно, если некоторые приложения для почтовых клиентов, которые получили это намерение, игнорируют дополнительные функции. –

+0

Он даже игнорирует текст Chooser перед выбором приложения. Затем я выбираю приложение Gmail, поэтому кажется, что должно быть какое-то намерение, которое, по крайней мере, работает с Gmail. – Scott

+0

Когда я создал Intent для отправки по электронной почте, я использовал единственный конструктор аргументов для Intent (просто действие). Вам не нужно писать mailto: шт. Кроме того, вам не нужно вызывать setType(). –

ответ

3

следующий код работает для меня (просто попытался его):

Intent i = new Intent(Intent.ACTION_SEND); 
i.setType("message/rfc822"); 
i.putExtra(Intent.EXTRA_EMAIL, new String[]{"[email protected]"}); 
i.putExtra(Intent.EXTRA_SUBJECT, "subject of email"); 
i.putExtra(Intent.EXTRA_TEXT , "body of email"); 
try { 
    startActivity(Intent.createChooser(i, "Choose email..."); 
} catch (android.content.ActivityNotFoundException ex) { 
    // handle edge case where no email client is installed 
} 
1

Попробуйте этот метод он работает для меня.

private void sendMail() { 

    Intent emailIntent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts("mailto", "[email protected]", null)); 
    emailIntent.putExtra(Intent.EXTRA_SUBJECT,getResources().getString(R.string.mail_txt)); 
    startActivity(Intent.createChooser(emailIntent, "Send email...")); 

}   
+0

Нет, это действительно странно - этот код, который, похоже, работает для других людей, не работает ни на одном из моих тестовых устройств – Scott

0

Буквально только что эту проблему, и вот как я ее решил:

Проверьте, если клиент электронной почты (в моем конкретном случае, Gmail) не только повторно используя неотправленные грубый вместо составления нового сообщения электронной почты так как при этом клиент, похоже, игнорирует и Intent.EXTRA_SUBJECT, и Intent.EXTRA_TEXT.

Смежные вопросы