2016-07-07 4 views
0

Я хочу, чтобы данные, введенные в форму ниже, были отправлены на [email protected] при нажатии кнопки - как я могу это сделать?Отправить простой текст по электронной почте android

enter image description here

Код:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 


    Intent intent = new Intent(Intent.ACTION_SEND); 
    intent.setType("text/plain"); 
    intent.putExtra(Intent.EXTRA_EMAIL, "[email protected]"); 
    intent.putExtra(Intent.EXTRA_SUBJECT, "Subject"); 
    intent.putExtra(Intent.EXTRA_TEXT, "I'm email body."); 

    startActivity(Intent.createChooser(intent, "Send Email")); 


} 

ответ

0

Там вы две ошибки в коде:.

# 1

Вам нужно получить текст из EditText и преобразовать его в String, а затем положить это письмо Intent внутри onClickListener вашего Button:

Попробуйте это:

EditText yourEditText = (EditText) findViewById(R.id.yourEditTextId); 
Button yourButton = (Button) findViewById(R.id. yourButton); 
yourButton.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     String enteredText = yourEditText.getText().toString(); 
     Intent intent = new Intent(Intent.ACTION_SEND); 
     intent.setType("text/plain"); 
     intent.putExtra(Intent.EXTRA_EMAIL,new String[]{"[email protected]"}); //2nd mistake is here. 
     intent.putExtra(Intent.EXTRA_SUBJECT, "Subject"); 
     intent.putExtra(Intent.EXTRA_TEXT, enteredText);      

     startActivity(Intent.createChooser(intent, "Send Email")); 

    } 
}); 

второй ошибкой является здесь:

intent.putExtra(Intent.EXTRA_EMAIL, "[email protected]"); 

электронная почта Намерение ожидает String array (как описано here), но вы предоставляете String, поэтому используйте:

intent.putExtra(Intent.EXTRA_EMAIL,new String[]{"[email protected]"}); 

UPDATE

Так как вы хотите, чтобы автоматически открыть приложение Gmail для отправки электронной почты , попробуйте следующее:

Intent intent = new Intent(Intent.ACTION_SEND); 
intent.setClassName("com.google.android.gm", "com.google.android.gm.ComposeActivityGmail"); 
intent.setType("text/plain"); 
intent.putExtra(Intent.EXTRA_EMAIL,new String[]{"[email protected]"}); 
intent.putExtra(Intent.EXTRA_SUBJECT, "Subject"); 
intent.putExtra(Intent.EXTRA_TEXT, "hi"); 

startActivity(Intent.createChooser(intent, "Send Email")); 

т.е. вы, чтобы добавить дополнительную строку, чтобы установить имя целевого класса в ComposeActivityGmail:

intent.setClassName("com.google.android.gm", "com.google.android.gm.ComposeActivityGmail"); 
+0

Теперь мое приложение просто падает при запуске, как это исправить? –

+0

Какая ошибка? Пожалуйста, поделитесь stacktrace –

+0

1:10:10 PM PSI и индекс не совпадают: PSI и индекс не соответствуют –

0

Вы должны сделать свой кнопку кликабельным с помощью setOnClickListener. Вам также необходимо получить текст с вашего EditText, используя getText().toString().

Чтобы получить ваш Button и EditText вам нужно использовать findViewById(R.id.your_id); где your_ID соответствует ID, присвоенный в файле макета XML для Button и EditText (больше на findViewByIdhere). Идентификаторы должны быть изменены, чтобы правильно идентификаторы в коде ниже

final EditText editText = (EditText) findViewById(R.id.edit_text); 
Button button = (Button) findViewById(R.id.button) 

button.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     String text = editText.getText().toString(); 
     Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts(
      "mailto", emailAddress, null)); 
     intent.setType("text/plain"); 
     intent.putExtra(Intent.EXTRA_EMAIL, "[email protected]"); 
     intent.putExtra(Intent.EXTRA_SUBJECT, "Subject"); 
     intent.putExtra(Intent.EXTRA_TEXT, text);      

     startActivity(Intent.createChooser(intent, "Send Email")); 

    } 
}); 
+0

мое приложение просто сбой теперь, когда начинается, где проблема и как исправить эту ошибку? –

+0

Вам нужно будет опубликовать журнал сбоев в logcat для меня, чтобы узнать, почему он падает. Вы изменили идентификаторы для кнопки и отредактировали текст, чтобы соответствовать тому, что есть в вашем XML-файле, как я имел в виду в своем ответе? Logcat обычно сообщает вам точную строку кода, вызывающую крах. –

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