Тост после электронного сообщения о намерениях - PullRequest
0 голосов
/ 22 марта 2012

В моем приложении задано намерение электронной почты, и я пытаюсь выпить пользователя после отправки электронного письма.

Вот "системный поток"

Пользователь нажимает кнопку -> дисплеи для выбора электронной почты -> отправлять электронную почту в клиенте -> отображаются общие тосты «Отправка электронной почты» -> пользовательский тост

Я попытался поставить синтаксис тоста после намерения электронной почты и метод onPause.

Кто-нибудь может мне помочь? вот мой пример кода.

Код:

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.TextView;

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

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.service);
        initializeVars();
        sendEmail.setOnClickListener(this);
    }

    // Use the following commented fields for future Spinner properties
    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);
        vehicleYear = (EditText) findViewById(R.id.tYear);
        vehicleMake = (EditText) findViewById(R.id.tMake);
        vehicleModel = (EditText) findViewById(R.id.Model);
        serviceDate = (TextView) findViewById(R.id.tpickDate);
        // serviceTime = (Spinner) findViewById(R.id.sTime);
        // serviceNeeded = (Spinner) findViewById(R.id.sNeeded);
        serviceTime = (EditText) findViewById(R.id.tTime);
        serviceNeeded = (EditText) findViewById(R.id.tNeeded);
        comments = (EditText) findViewById(R.id.eComments);
        sendEmail = (Button) findViewById(R.id.bSentEmail);
        // PickDate = (Button) findViewById(R.id.pickDate);
    }

    public void onClick(View v) {

        // TODO Auto-generated method stub
        conversion();
        String emailaddress[] = { "email@example.com" };
        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("vnd.android.cursor.dir/email");
        emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[] { "email@example.com" });
        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"));
        Toast.makeText(ScheduleService.this, R.string.myString, Toast.LENGTH_SHORT).show();
    }

    private void conversion() {
        // 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();// Text field substitute
                                                        // for spinner adapter
        vehicleManu = vehicleMake.getText().toString(); // Text field substitute
                                                        // for spinner adapter
        // vehicleYears = (String) vehicleYear.getAdapter().getItem(RESULT_OK);
        // vehicleManu = (String) vehicleMake.getAdapter().getItem(RESULT_OK);
        vehicleModeltrim = vehicleModel.getText().toString();
        serviceAppointment = serviceDate.getText().toString();
        serviceAppointmentTime = serviceTime.getText().toString();
        serviceTypeNeeded = serviceNeeded.getText().toString();

        // serviceAppointmentTime = (String) serviceTime.getAdapter().getItem(
        // RESULT_OK);
        // /serviceTypeNeeded = (String) serviceNeeded.getAdapter().getItem(
        // RESULT_OK);
        extraComments = comments.getText().toString();
    }

    @Override
    protected void onPause() {
        // TODO Auto-generated method stub
        super.onPause();
        finish();

    }
}

1 Ответ

3 голосов
/ 22 марта 2012

ОБНОВЛЕНИЕ: я думаю, что я неправильно понял вашу проблему;из того, что я могу сказать сейчас, вы хотите, чтобы ваш тост появлялся ПОСЛЕ того, как электронное письмо было отправлено, и был показан тост почтового приложения?Если это так, попробуйте следующее:

Сначала удалите finish() из вашего onPause() метода.

Затем замените startActivity на startActivityForResult, который принимает дополнительный аргумент requestCode.requestCode используется для отделения результатов от различных действий.

startActivityForResult(Intent.createChooser(emailIntent, "Please select Email Client"), 
    MY_REQUEST_CODE); // MY_REQUEST_CODE is some constant int >= 0

Наконец добавьте следующий код в и получите результат от startActivityForResult.Здесь вы можете решить, какой тост отображать, в зависимости от результата.

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    Log.i("SS", "onActivityResult: " + requestCode + ", " + resultCode + ", " 
        + (data != null ? data.toString() : "empty intent"));
    if(requestCode == MY_REQUEST_CODE) {
        if(resultCode == RESULT_OK) {
            Toast.makeText(getApplicationContext(), R.string.myString,
                Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(getApplicationContext(), R.string.myOtherString, 
                Toast.LENGTH_SHORT).show();
        }
    }
    finish(); // to end your activity when toast is shown
}

Если это то, что вам действительно нужно, извините, я сначала не ясно увидел вашу проблему.


Старые мысли:

Ниже приведено небольшое приложение, которое только сокращает ваше ручное действие (кнопка) для отправки намерения по электронной почте.Это прекрасно работает для меня.Если это работает и для вас, то, возможно, ваш способ вызова метода «отправить намерение» с нажатой кнопки имеет некоторые странности.

package my.test;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Toast;

public class AndroidTestActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Toast.makeText(AndroidTestActivity.this, "Welcome toast", Toast.LENGTH_SHORT).show();
        Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
        emailIntent.setType("vnd.android.cursor.dir/email");
        emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{"bfdk@dgfsgfds.dfs"});
        emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Schedule Service Request");
        emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Message goes here");
        startActivity(Intent.createChooser(emailIntent, "Please select Email Client"));
        Toast.makeText(AndroidTestActivity.this, R.string.myString, Toast.LENGTH_SHORT).show();
    }

    @Override
    protected void onPause() {
        super.onPause();
        finish();
        Toast.makeText(getApplicationContext(), "Pause toast", Toast.LENGTH_SHORT).show();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Toast.makeText(this, "Destroy toast", Toast.LENGTH_SHORT).show();
    }
}
...