Próbuję użyć zamiarwysłać wiadomość e-mail z mojej aplikacji, ale pole Do w wiadomości e-mail nie zostanie wypełnione. Jeśli dodam kod, aby wypełnić temat lub tekst, działają dobrze. Tylko pole Do nie zostanie wypełnione.
Próbowałem również zmienić typ na „tekst / zwykły” i „tekst / html”, ale pojawia się ten sam problem. Czy ktoś może mi pomóc?
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...")); }
Klient poczty e-mail, którego próbuję użyć, to Gmail
android
android-intent
użytkownik
źródło
źródło
intent.putExtra(Intent.EXTRA_EMAIL, list.toArray())
tego NIE DZIAŁA, ponieważ list.toArray () produkuje Object [], a nie String []intent.putExtra(Intent.EXTRA_EMAIL, list.toArray(new String[0]))
Użyj tego
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...")); ``}
To zadziała :)
Tak mówi dokumentacja Androida o Intent.Extra_Email
- Tablica ciągów wszystkich adresów e-mail odbiorców „Do”.
Więc powinieneś poprawnie podawać ciąg znaków. Możesz przeczytać więcej tutaj
http://developer.android.com/guide/components/intents-common.html#Email i tutaj http://developer.android.com/guide/topics/resources /string-resource.html Lub użyj akcji ACTION_SENDTO i dołącz schemat danych „mailto:”. Na przykład:
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); }
źródło
W 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() } }
//argument of function val subject = "subject of you email" val eMailMessageTxt = "Add Message here" val eMailId1 = "[email protected]" val eMailId2 = "[email protected]" val eMailIds: Array<String> = arrayOf(eMailId1,eMailId2) //Calling function sendMail(this, eMailIds, subject, eMailMessageTxt)
Mam nadzieję, że ten fragment kodu pomoże programistom Kotlin.
źródło
private void callSendMeMail() { Intent Email = new Intent(Intent.ACTION_SEND); Email.setType("text/email"); Email.putExtra(Intent.EXTRA_EMAIL, new String[] { "[email protected]" }); Email.putExtra(Intent.EXTRA_SUBJECT, "Feedback"); startActivity(Intent.createChooser(Email, "Send mail to Developer:")); }
źródło
Kilka rzeczy:
1 - Musisz ustawić stałą akcji jako ACTION_SENDTO.
Intent intentEmail = new Intent(Intent.ACTION_SENDTO);
2 - Jeśli chcesz, aby był otwierany tylko przez pocztę, użyj metody setData ():
intentEmail.setData(Uri.parse("mailto:"));
W przeciwnym razie poprosi Cię o otwarcie go jako tekstu, obrazu, pliku audio przez inne aplikacje obecne na twoim urządzeniu.3 - Musisz przekazać ciąg identyfikujący e-mail jako obiekt tablicy, a nie tylko jako ciąg. Ciąg to: „[email protected]” . Array Obiekt ciągu to: new String [] {"email1", "email2", "more_email"} .
intentEmail.putExtra(Intent.EXTRA_EMAIL, new String[] {"[email protected]", "[email protected]"});
źródło