2011-06-06 12 views
5

Actualmente estoy trabajando en una aplicación de Android que tiene un formulario de pedido. Me gustaría saber cómo puedo permitir que la aplicación capture lo que el usuario ha ingresado y envíe la entrada directamente a un correo electrónico mediante el botón, sin llevar al usuario a la página de la aplicación de correo electrónico. Sé que mi clase .java tiene errores, sin embargo, estoy probando ... Debajo está mi archivo xml (diseño) y mi archivo de clase .java. Por favor, ayúdame ... ¡Gracias!Capturar la entrada del usuario y enviarla directamente a una dirección de correo electrónico con el botón

Aquí está mi archivo .xml (layout)

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:stretchColumns="1"> 
<TextView 
    android:id="@+id/txtname" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Name: " 
    /> 
<EditText 
    android:id="@+id/editname" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/txtname" 
    android:hint="Your name please" 
    /> 
<TextView 
    android:id="@+id/txtemail" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/editname" 
    android:text="Email Address: " 
    /> 
<EditText 
    android:id="@+id/editemail" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/txtemail" 
    android:hint="Enter email address here" 
    /> 
<TextView 
    android:id="@+id/txtnum" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/editemail" 
    android:text="Contact Number: " 
    /> 
<EditText 
    android:id="@+id/editnum" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/txtnum" 
    android:hint="Enter contact number here" 
    /> 
<TextView 
    android:id="@+id/txtadd" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/editnum" 
    android:text="Mailing Address: " 
    /> 
<EditText 
    android:id="@+id/editadd" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/txtadd" 
    android:hint="Enter mailing address here" 
    /> 
<TextView 
    android:id="@+id/txtitems" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/editadd" 
    android:text="Item(s): " 
    /> 
<EditText 
    android:id="@+id/edititems" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/txtadd" 
    android:hint="Enter item(s) here" 
    /> 
<Button 
    android:id="@+id/btn_submit" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/edititems" 
    android:text="Submit form" 
    /> 
</TableLayout> 

Aquí es mis códigos de clase .java

public class OrderFormActivity extends Activity implements OnClickListener{ 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.orderform); 

    Button btnsubmit = (Button)findViewById(R.id.btn_submit); 
    btnsubmit.setOnClickListener(this); 
} 

@Override 
public void onClick(View v) { 
    // TODO Auto-generated method stub 
    if (v == this.findViewById(R.id.btn_submit)) { 

    EditText name = (EditText)findViewById(R.id.editname); 
    String strname = name.getText().toString(); 

    EditText email = (EditText)findViewById(R.id.editemail); 
    String stremail = email.getText().toString(); 

    EditText num = (EditText)findViewById(R.id.editnum); 
    String strnum = num.getText().toString(); 

    EditText add = (EditText)findViewById(R.id.editadd); 
    String stradd = add.getText().toString(); 

    EditText items = (EditText)findViewById(R.id.edititems); 
    String stritems = items.getText().toString(); 

    showOrder(strname, stremail, strnum, stradd,stritems); 
    } 

} 

private void showOrder (String strname, String stremail, String strnum, String stradd, String stritems) { 
    String result = strname + stremail + strnum + stradd + stritems; 

    //Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); 

    String emailAddress = "[email protected]"; 

    Intent intent = new Intent(Intent.ACTION_SEND); 
    intent.setType("plain/text"); 
    intent.putExtra(Intent.EXTRA_EMAIL, emailAddress);  
    intent.putExtra(Intent.EXTRA_TEXT, result);   

} 

}

Gracias a ll de nuevo por adelantado! : D

+0

Use android: onHaga clic en el botón XML y luego haga una función para hacer clic en el botón. Entonces no necesitas esa prueba para v == ... – trgraglia

+3

Ver http://stackoverflow.com/questions/2020088/sending-email-in-android-using-javamail-api-without-using-the-default-android -app – PearsonArtPhoto

+0

Gracias a todos por la respuesta rápida. -gragaglia, creo que ese no es el problema principal porque lo que estoy tratando de hacer ahora es enviar el correo electrónico capturando todas las entradas del usuario a una dirección de correo electrónico específica con la ayuda de solo un botón. -Pearsonartphoto, gracias por la respuesta, ¿hay alguna forma más corta de hacerlo? Porque encontré esa solución demasiado engorrosa ... ¡Lo siento! – Winona

Respuesta

2

No hay API para enviar un correo electrónico a través de intenciones sin interacción del usuario. Esto se ha repetido varias veces aquí en SO.

Como pearsonartphoto sugirió, necesita utilizar una biblioteca externa para enviar el correo electrónico. JavaMail es la primera opción clara, incluso si "encontraste esa solución demasiado engorrosa".

Por lo tanto, debe reunir todos los campos publicados, formatear de forma útil el correo electrónico (quizás xml, ¿quizás JSON?) Y enviarlo como texto con JavaMail.

+0

o simplemente envíe una solicitud postal a su propio servidor web ejecutando tal vez PHP y use la función 'mail' para enviar el correo – binnyb

+0

Hola, gracias por su respuesta. Sin embargo, sigo teniendo dudas sobre cómo usar JavaMail y usar xml para reunir los campos para el usuario. :/Totalmente perdido y rumbo a la nada ... – Winona

+0

@Winona Puede usar JSON en lugar de XML para una solución más simple. Pruebe las bibliotecas GSON o org.json. – Aleadam

Cuestiones relacionadas