Android Studio - Send Email GMAIL
Hola amigos en esta ocasion les enseñare como enviar correos desde su aplicación Android.
Primero nos dirigiremos a nuestra cuenta de GMAIL. para habilitar la opción de envió de correos desde aplicaciones externas.
Crear proyecto Android Studio
Vamos a crear un proyecto. (AquĆ).Teniendo listo nuestro proyecto podemos comenzar a desarrollar nuestra aplicación.
Lo primero que haremos sera crear el diseƱo de nuestro Activity.
Antes de todo crearemos un diseƱo para nuestro Activity, de la siguiente forma.
Los agregaremos a nuestro directorio Drawable.
stylebtn.xml sera el diseƱo para nuestro Button.
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<corners android:radius="5dip" />
<stroke
android:width="1px"
android:color="@color/btn2" />
<gradient
android:startColor="@color/btn1"
android:endColor="@color/btn2"
android:angle="90">
</gradient>
</shape>
styletv.xml es el diseƱo para nuestro TextView.
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid
android:color="#ccc"
/>
<corners
android:bottomLeftRadius="5dp"
android:bottomRightRadius="5dp"
android:radius="0.1dp"
android:topLeftRadius="5dp"
android:topRightRadius="5dp" />
<stroke android:width="1dp" android:color="#ccc"></stroke>
<padding
android:top="10dp"
android:bottom="10dp"
/>
</shape>
Ahora añadiremos dentro de el directorio valúes el Colors.xml
<color name="btn1">#024C5A</color>
<color name="btn2" >#075F6B</color>
<color name="text_button">#fff</color>
<color name="text">#000</color>
<color name="textTitles">#024C5A</color>
activity_main.xml sera el diseƱo principal de nuestro Activity
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#fff"
tools:context=".MainActivity">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="71dp"
android:background="#024C5A"
android:weightSum="1">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Enviar Email"
android:textStyle="bold"
android:textSize="30dp"
android:textColor="#fff"
android:id="@+id/textView13"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true" />
</RelativeLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18dp"
android:text="To:"
android:id="@+id/textView"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="105dp"
android:layout_marginRight="10dp"
android:layout_marginLeft="10dp"
android:textColor="#024C5A" />
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/edtTo"
android:background="@drawable/styletv"
android:layout_below="@+id/textView"
android:layout_marginRight="10dp"
android:layout_marginLeft="10dp"
android:layout_centerHorizontal="true"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18dp"
android:text="Subject: "
android:id="@+id/textView2"
android:textColor="@color/textTitles"
android:layout_below="@+id/edtTo"
android:layout_alignParentLeft="true"
android:layout_marginRight="10dp"
android:layout_marginLeft="10dp"
android:layout_alignParentStart="true" />
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/edtSubject"
android:background="@drawable/styletv"
android:layout_below="@+id/textView2"
android:layout_marginRight="10dp"
android:layout_marginLeft="10dp"
android:layout_centerHorizontal="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18dp"
android:text="Message: "
android:textColor="@color/textTitles"
android:id="@+id/textView3"
android:layout_below="@+id/edtSubject"
android:layout_alignParentLeft="true"
android:layout_marginRight="10dp"
android:layout_marginLeft="10dp"
android:layout_alignParentStart="true" />
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="textMultiLine"
android:lines="4"
android:background="@drawable/styletv"
android:id="@+id/edtMensaje"
android:layout_below="@+id/textView3"
android:layout_marginRight="10dp"
android:layout_marginLeft="10dp"
android:layout_centerHorizontal="true" />
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Send"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:id="@+id/btnEnviar"
android:background="@drawable/stylebtn"
android:textColor="@color/text_button"
android:layout_margin="10dp"
android:layout_marginRight="10dp"
android:layout_marginLeft="10dp"
android:layout_marginTop="50dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18dp"
android:textColor="@color/textTitles"
android:id="@+id/data"
android:layout_below="@+id/edtMensaje"
android:layout_alignParentLeft="true"
android:layout_marginRight="10dp"
android:layout_marginLeft="10dp"
android:layout_alignParentStart="true" />
<ImageButton
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_below="@+id/edtMensaje"
android:layout_marginRight="10dp"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:layout_alignParentEnd="true"
android:id="@+id/imgbtnChoose"
android:src="@drawable/attachment"
android:background="@drawable/stylebtn"
android:padding="10dp"
android:adjustViewBounds="true"
android:scaleType="centerInside" />
</RelativeLayout>
La imagen que se utiliza para nuestro ButtonImage la pueden descargar a su gusto.
Agregar Dependencias build.gradle.
Continuamos con el código. Para no tener problemas con nuestro código necesitamos agregar las dependencias y para ello nos dirigimos al archivo build.gradle (Module: app).
De igual forma si prefieren las librerĆas Jar. les dejare el link para que las puedan descargar.
Descargar:
activation.jar
additional.jar
mail.jar
Con esto agregado no deberĆamos tener problemas con el código de nuestra aplicación.
Descargar:
JSSEProvider.java
GMailSender.java
ImageFilePath.java
Para terminar agregaremos los permisos a nuestro archivo AndroidManifest.xml
El resultado sera el siguiente.
CompƔrtelo para promover el conocimiento.
Descargar: AquĆ
compile 'com.sun.mail:android-mail:1.5.5'
compile 'com.sun.mail:android-activation:1.5.5'
De igual forma si prefieren las librerĆas Jar. les dejare el link para que las puedan descargar.
Descargar:
activation.jar
additional.jar
mail.jar
Con esto agregado no deberĆamos tener problemas con el código de nuestra aplicación.
Código de MaintActivity
Ahora agregaremos el código para nuestro MainActivity. Antes de esto deberÔn descargar las siguientes clases que les dejare para que las añadan a su proyecto.Descargar:
JSSEProvider.java
GMailSender.java
ImageFilePath.java
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
// Declaramos las variables de tipo EditText
EditText edtTo,edtSubject,edtMensaje;
// Declaramos la variable tipo TextVeiw
TextView txtData;
// Declara la variable para el request de la selección del archivo
private int PICK_FILE_REQUEST = 1;
// Declaramos la variable que contendra la ruta del archivo adjunto
String filename ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Asignamos las propiedades de los controles a las variables
edtTo = (EditText) findViewById(R.id.edtTo);
edtSubject = (EditText) findViewById(R.id.edtSubject);
edtMensaje = (EditText) findViewById(R.id.edtMensaje);
txtData = (TextView) findViewById(R.id.data);
// Verificar la version del SDKy los permisos
requestRuntimePermission();
// Evento click del botón
final Button send = (Button) this.findViewById(R.id.btnEnviar);
send.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
// Asignamos las propuedades del correo que utilizaremos
GMailSender sender = new GMailSender("email", "password");
// Verificar si se adjunto un archivo
if(filename != null){
sender.addAttachment(filename);
}
// Enviar el mensaje al correo asignado
sender.sendMail(edtSubject.getText().toString(),
edtMensaje.getText().toString(),"email",
edtTo.getText().toString());
} catch (Exception e) {
Log.e("ErrorSendMail", e.getMessage(), e);
}
}
});
thread.start();
}
});
// ImageButtn para seleccionar el archivo y almacenar la ruta
ImageButton choose = (ImageButton) this.findViewById(R.id.imgbtnChoose);
choose.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
showFileChooser();
}
});
}
private void showFileChooser() {
// Accion que se va a realizar en el Intent
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
// Tipo de archivos que se pueden seleccionar
intent.setType("*/*");
// Ejecutar la accion Intent
startActivityForResult(intent, PICK_FILE_REQUEST);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// Verificar que la seleccion cumple con el estado de seleccion
if (requestCode == PICK_FILE_REQUEST && resultCode == RESULT_OK) {
// Obtener la data seleccionado
Uri filePath = data.getData();
// Asignar la ruta que se obtiene usando la clase imagefilepath
filename = imagefilepath.getPath(getApplicationContext(), filePath);
// Obtenemos el nombre del archivo que hemos seleccionado
String filenames = filename.substring(filename.lastIndexOf("/")+1);
// Asignamos a nuestro txtData el nombre del archivo
txtData.setText(filenames);
}
}
private void requestRuntimePermission() {
if (Build.VERSION.SDK_INT >= 23) {
if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
}
}
}
}
Para terminar agregaremos los permisos a nuestro archivo AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
Crear Emulador AVD
Teniendo listo esto podremos ejecutar nuestra aplicación creando un emulador. AquĆEl resultado sera el siguiente.
CompƔrtelo para promover el conocimiento.
Descargar: AquĆ
Si le das a alguien un programa, lo frustrarĆ”s un dĆa. Si le enseƱas a programar, lo frustrarĆ”s toda la vida.
- Anónimo





No hay comentarios:
Publicar un comentario