2012-03-22 3 views
0

전자 메일 인 텐트가 내 응용 프로그램에 설정되어 있으며 전자 메일을 보낸 후 사용자에게 토스트를하려고합니다. > 이메일 선택기 표시 - - 여기 전자 메일 인스트럭션 메시지 후 토스트

은 "시스템 흐름"

사용자가 버튼을 클릭하는 것입니다 일반 토스트에 "이메일 보내기"> - -> 클라이언트에 이메일을 보내> 맞춤 토스트

나는 퍼팅 시도 전자 메일 인 텐트 후 토스트 구문 및 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를 토스트합니다. 에뮬레이터에서는 2.3.3 버전의 Android 버전을 사용하고 있으며 기기에서는 2.3.7 버전을 사용하고 있습니다. API 레벨 10. 설정에 대해 더 자세히 알 수 있습니까? – Paaske

+0

예, 이것은 이메일과 일시 중지 세그먼트에 불과합니다. 그것은 토스트 (myString)하지만, 그것은 사용자가 제출을 누르면 바로 토스트 것으로 보인다. 일반 이메일 의도 토스트 후에 토스트가 트리거 될 수 있는지 궁금합니다. – MADPADGE

+0

기본 UI 입력 양식으로 데이터 뷰 editText를 수집합니다. 전자 메일 인 텐트가 전송되고 사용자가 전자 메일 클라이언트를 통해 양식을 보냅니다. 이메일 보내기 버튼을 누르면 안드로이드 토스트 "이메일 보내기"; 그러나 사용자는 나중에 "이메일로 보낸"토스트를받지 못합니다. 이게 도움이 되었으면 좋겠다 – MADPADGE

답변

2

UPDATE : 나는 당신의 문제를 오해 생각; 내가 지금 말할 수있는 것부터, 전자 메일을 보내고 전자 메일 응용 프로그램의 토스트가 표시된 후에 토스트가 나타나길 원하십니까? 이 경우 다음을 시도하십시오.

먼저 onPause() 방법에서 finish()을 제거하십시오.

그런 다음 startActivitystartActivityForResult으로 바꾸십시오. 추가 인수는 requestCode입니다. requestCode은 다른 활동의 결과를 구분하는 데 사용됩니다. startActivityForResult의 결과를받을

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

마지막으로 다음 코드를 추가합니다. 여기서 결과에 따라 표시 할 토스트를 결정할 수 있습니다.

@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

+0

활동이 시작되지만 전자 메일 클라이언트를 선택할 때 토스트가 계속 나타납니다. 매우 이상한 – MADPADGE

+0

예상대로 작동한다는 것을 의미합니까? 그렇다면 버튼을 어떻게 처리 할 것인가? main/ui 스레드에서 처리되는 클릭에 문제가있을 수 있습니까? – Paaske

관련 문제