Электронная почта для выбора адреса электронной почты

У меня проблема с моим приложением. Целью приложения является сбор данных и отправка формы данных с помощью javamail на указанный адрес электронной почты. когда пользователь нажимает кнопку, он должен получить приглашение выбрать почтовый клиент, однако я не получаю этого приглашения, когда тестирую его. Может ли кто-нибудь сказать мне, что мне не хватает?

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;

public class SubmitForm extends Activity implements View.OnClickListener {
private Intent emailIntent;
EditText personsFirstName, personsLastName, personsEmail, personsPhone, comments, vehicleModel;
Spinner vehicleYear, vehicleMake, serviceTime, serviceNeeded;
TextView serviceDate;
String fname, lname, emailAdd, phoneNumber, vehicleYears, vehicleModeltrim, vehicleManu, serviceAppointment, serviceAppointmentTime, serviceTypeNeeded, extraComments;
Button sendEmail;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.service);
    initializeVars();
    sendEmail.setOnClickListener(this);
}
private void initializeVars() {
    // TODO Auto-generated method stub
    personsFirstName = (EditText) findViewById(R.id.firstName);
    personsLastName = (EditText) findViewById(R.id.lastName);
    personsEmail = (EditText) findViewById(R.id.Email);
    personsPhone = (EditText) findViewById(R.id.PhoneNumber);
    vehicleYear = (Spinner) findViewById(R.id.sYear);
    vehicleMake = (Spinner) findViewById(R.id.sMake);
    vehicleModel = (EditText) findViewById(R.id.Model);
    serviceDate = (TextView) findViewById(R.id.Model);
    serviceTime = (Spinner) findViewById(R.id.sTime);
    serviceNeeded = (Spinner) findViewById(R.id.sNeeded);
    comments = (EditText) findViewById(R.id.eComments);
    sendEmail = (Button) findViewById(R.id.bSubmit);
}
public void onClick(View v) {
    // TODO Auto-generated method stub
    convertToString();
    String emailaddress[] = { emailAdd };
    String message = "Please Review the following"
            + '\n' + " "
            + '\n' + "First Name: " + fname
            + '\n' + "Last Name: " + lname
            + '\n' + "Email :" + emailAdd
            + '\n' + "Phone Number: " + phoneNumber
            + '\n' + "Vechile Year: " + vehicleYears
            + '\n' + "Vehicle Make: " + vehicleManu
            + '\n' + "Vehicle Model: " + vehicleModeltrim
            + '\n' + "Requested Service Date: " + serviceAppointment
            + '\n' + "Requested Service Time: " + serviceAppointmentTime
            + '\n' + "Service Needed: " + serviceTypeNeeded
            + '\n' + "Comments: " + extraComments;

    Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
    emailIntent.setType("plain/text");
    emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[] {"[email protected]"});

    emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, emailaddress);
    emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Schedule Service Request");

    emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, message);
    startActivity(Intent.createChooser(emailIntent, "Please select Email Client"));
}
private void convertToString() {
    // TODO Auto-generated method stub

    fname = personsFirstName.getText().toString();
    lname = personsLastName.getText().toString();
    emailAdd = personsEmail.getText().toString();
    phoneNumber = personsPhone.getText().toString();

    //vehicleYears = vehicleYear.getText().toString();
    vehicleYears = (String) vehicleYear.getAdapter().getItem(RESULT_OK);


    //vehicleManu = vehicleMake.getText().toString();
    vehicleManu = (String) vehicleMake.getAdapter().getItem(RESULT_OK);

    vehicleModeltrim = vehicleModel.getText().toString();
    serviceAppointment = serviceDate.getText().toString();
    serviceAppointmentTime = (String) serviceTime.getAdapter().getItem(RESULT_OK);


    //serviceTypeNeeded = serviceNeeded.getText().toString();
    serviceTypeNeeded = (String) serviceNeeded.getAdapter().getItem(RESULT_OK);

    extraComments = comments.getText().toString();
}
@Override
protected void onPause() {
    // TODO Auto-generated method stub
    super.onPause();
    finish();
}
}

person MADPADGE    schedule 13.03.2012    source источник
comment
привет, это Имран, а как насчет этих двух строк:emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[] {"[email protected]"}); emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, emailaddress);   -  person ρяσѕρєя K    schedule 13.03.2012
comment
или замените этот `emailIntent.setType(обычный/текст)` на emailIntent.setType("text/plain")   -  person ρяσѕρєя K    schedule 13.03.2012
comment
перейдите по этой ссылке, это может помочь вам vidyut.com/sunit/android/android_sendmail.html   -  person Aerrow    schedule 13.03.2012


Ответы (2)


если вы хотите выбрать только установку почтового клиента на устройстве, вы можете использовать опцию ACTION_SENTTO

String mailTo="[email protected]";
Intent email_intent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts("mailto",mailTo, null)); 
email_intent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Subject text here"); 
email_intent.putExtra(android.content.Intent.EXTRA_TEXT,"Body text here"); 

startActivity(Intent.createChooser(email_intent, "Send email..."));

попробуйте это сообщение электронной почты на реальном устройстве... эмулятор может не дать вам результата..

удачи..

person Kri    schedule 13.03.2012
comment
Спасибо, я попробовал это на своем устройстве, и оно по-прежнему не отображает окно выбора электронной почты; очень странный. Должно ли это намерение активироваться в манифесте? - person MADPADGE; 14.03.2012
comment
один совет: убедитесь, что на вашем реальном устройстве установлено более одного почтового клиента... - person Kri; 15.03.2012
comment
вы также можете попробовать setType(message/rfc822); может быть, он покажет только почтовый клиент, установленный на вашем устройстве... - person Kri; 15.03.2012
comment
Спасибо, я понял в чем дело. getAdapter останавливал его. Как только я прокомментировал это и удалил переменные, все заработало отлично. Спасибо за вашу помощь - person MADPADGE; 22.03.2012

только для записи:

Некоторые приложения электронной почты, такие как Gmail, ожидают String[] для дополнительных функций, таких как EXTRA_EMAIL и EXTRA_CC, используйте putExtra(String, String[]), чтобы добавить их в соответствии с вашими намерениями.

страница разработчика Android

val sendIntent: Intent = Intent().apply {
            action = Intent.ACTION_SEND
            putExtra(Intent.EXTRA_EMAIL, arrayOf("[email protected]"))
            putExtra(Intent.EXTRA_SUBJECT, "subject")
            putExtra(Intent.EXTRA_TEXT, "content")
            type = "text/plain"
}

startActivity(Intent.createChooser(sendIntent, "Send mail"))
person longi    schedule 07.05.2020