Я пытаюсь использовать намерениедля отправки электронного письма из моего приложения, но поле «Кому» электронного письма не заполняется. Если я добавлю код для заполнения темы или текста, они будут работать нормально. Просто поле «Кому» не заполняется.
Я также пробовал изменить тип на «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.
android
android-intent
пользователь
источник
источник
intent.putExtra(Intent.EXTRA_EMAIL, list.toArray())
это НЕ РАБОТАЕТ, поскольку list.toArray () создает Object [], а не String []intent.putExtra(Intent.EXTRA_EMAIL, list.toArray(new String[0]))
Использовать это
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...")); ``}
Это будет работать :)
Это то, что в документации Android говорится о Intent.Extra_Email
- строковом массиве всех адресов электронной почты получателей «Кому».
Таким образом, вы должны правильно подавать строку. Подробнее можно прочитать здесь
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); }
источник
В Котлине - 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 = "emailId1@gmail.com" val eMailId2 = "emailId2@gmail.com" val eMailIds: Array<String> = arrayOf(eMailId1,eMailId2) //Calling function sendMail(this, eMailIds, subject, eMailMessageTxt)
Надеюсь, этот фрагмент кода поможет разработчикам котлинов.
источник
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:")); }
источник
Пара вещей:
1 - Вам нужно установить постоянную переменную действия как ACTION_SENDTO.
Intent intentEmail = new Intent(Intent.ACTION_SENDTO);
2 - Если вы хотите, чтобы он открывался только по почте, используйте метод setData (): в
intentEmail.setData(Uri.parse("mailto:"));
противном случае он попросит вас открыть его как текст, изображение, аудиофайл другими приложениями, присутствующими на вашем устройстве.3 - Вам необходимо передать строку идентификатора электронной почты как объект массива, а не только как строку. Строка: «name@email.com» . Объектом массива строки является: new String [] {"email1", "email2", "more_email"} .
intentEmail.putExtra(Intent.EXTRA_EMAIL, new String[] {"email@overflow.com", "abcd@stack.com"});
источник