2012-03-22 37 views
0

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

这里是“系统流”

用户点击按钮 - >邮件选择器显示 - >发送电子邮件客户端 - >“发送电子邮件”通用敬酒显示 - >自定义敬酒

我试图把电子邮件意图之后的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 protected]" }; 
     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 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")); 
     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(); 

    } 
} 
+0

您确定这是所有重要的代码?我已经使用您的代码创建了一个测试应用程序,并且我没有显示吐司的问题。在startActivity,onPause和onDestroy之后,我敬酒onCreate。我在仿真器上使用Android版本2.3.3,在设备上使用2.3.7版本。 API级别10.您能详细了解您的设置吗? – Paaske 2012-03-22 15:46:38

+0

当然,这只是电子邮件和停顿片段。它做吐司(myString),但是,它似乎在用户按下提交后敬酒。想知道在通用电子邮件意图烤面包之后是否可以触发吐司。 – MADPADGE 2012-03-22 16:03:21

+0

这是一个基本的UI输入表单,它收集数据视图editText。在提交电子邮件意图被触发时,用户通过他们的电子邮件客户端发送表单。在发送电子邮件按钮被按下后,android toast“发送电子邮件”;然而,用户之后没有收到“发送电子邮件”的祝酒词。希望这有助于澄清 – MADPADGE 2012-03-22 16:05:18

回答

2

更新:我想我误解你的问题。从我现在可以知道的情况来看,您希望在发送电子邮件并显示电子邮件应用程序的烤面包之后出现烤面包?如果是这种情况,请尝试以下操作:

首先从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结果最后添加以下代码。在这里,您可以根据结果决定要显示哪个面包。

@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[]{"[email protected]"}); 
     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(); 
    } 
} 
+0

我会试试这个,谢谢 – MADPADGE 2012-03-22 16:36:38

+0

活动启动,但选择电子邮件客户端时仍会出现祝酒。非常奇怪 – MADPADGE 2012-03-22 18:03:29

+0

你的意思是说,它按预期工作?如果是的话如何处理按钮点击?也许在main/ui线程上处理点击有问题? – Paaske 2012-03-23 08:33:42

相关问题