电子邮件意图消息后敬酒



我的应用程序中设置了电子邮件意图,并且我试图在发送电子邮件后向用户敬酒。

这是"系统流程">

用户单击按钮 -显示>电子邮件选择器 ->客户端发送电子邮件 ->"发送电子邮件"通用 Toast 显示 -> 自定义 Toast

我尝试将 toast 语法放在电子邮件意图和 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();
    }
}

更新:我想我误解了你的问题; 据我现在所知,您希望在发送电子邮件并显示电子邮件应用程序的 Toast 后出现您的 Toast?如果是这种情况,请尝试以下操作:

首先从onPause()方法中删除finish()

然后,将您的startActivity替换为startActivityForResult,这需要额外的参数requestCoderequestCode用于分离不同活动的结果。

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

最后添加以下代码以接收来自startActivityForResult的结果。在这里,您可以根据结果决定显示哪个 Toast。

@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();
    }
}

最新更新