Hoy veremos un Login en mysql con la libreria volley, este tutorial constara de tres partes en la primera parte se vio la base de datos, la web services y un ejercicio en android de como listar usuarios con todos sus datos, aquí trataremos algunos conceptos básicos y la implementacion de dicho ejercicio.
Como Iniciar Sesion (login)con la libreria volley
Contenidos
Continuaremos con el ejercicio, pero necesitaras la base de datos y los archivos del curso parte 1 que lo encontraras en el siguiente enlace: Como listar usuario con la libreria volley
Luego puede continuar aquí con el tutorial.
activity_iniciar_sesion
<?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:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.androfast.server.appcursovolley.MainActivity"> <Button android:text="Button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="115dp" android:id="@+id/btnOk" /> <TextView android:text="TextView" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@+id/btnOk" android:layout_marginTop="137dp" android:id="@+id/txtListar" android:layout_alignParentStart="true" /> <TextView android:text="Bienvenido:" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_alignParentStart="true" android:layout_marginStart="21dp" android:layout_marginTop="48dp" android:id="@+id/textView" android:textSize="18sp" android:textStyle="normal|bold" /> <TextView android:text="TextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignTop="@+id/textView" android:layout_alignStart="@+id/btnOk" android:id="@+id/txtNombreSesion" /> <TextView android:text="TextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/txtNombreSesion" android:layout_centerHorizontal="true" android:layout_marginTop="27dp" android:id="@+id/txtCorreoSesion" /> </RelativeLayout>
Imagen que debe ir guardada en la carpeta drawable
Usuario
import android.os.Parcel; import android.os.Parcelable; /** * Created by Server on 02/06/2018. */ public class Usuario implements Parcelable{ private String nombre; private int codigo; private String email; private String clave; private String movil; protected Usuario(Parcel in) { setNombre(in.readString()); setCodigo(in.readInt()); setEmail(in.readString()); clave = in.readString(); movil = in.readString(); } public static final Creator<Usuario> CREATOR = new Creator<Usuario>() { @Override public Usuario createFromParcel(Parcel in) { return new Usuario(in); } @Override public Usuario[] newArray(int size) { return new Usuario[size]; } }; public Usuario(){ } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(getNombre()); dest.writeInt(getCodigo()); dest.writeString(getEmail()); dest.writeString(clave); dest.writeString(movil); } public String getNombre() { return nombre; } public int getCodigo() { return codigo; } public String getEmail() { return email; } public void setNombre(String nombre) { this.nombre = nombre; } public void setCodigo(int codigo) { this.codigo = codigo; } public void setEmail(String email) { this.email = email; } }
MainActivity
public class MainActivity extends AppCompatActivity { TextView listarUsuario; Button ok; private Usuario user; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listarUsuario=(TextView)findViewById(R.id.txtListar); ok=(Button)findViewById(R.id.btnOk); ok.setOnClickListener(new View.OnClickListener(){ public void onClick(View v){ listar(); } }); Bundle bundle=getIntent().getExtras(); user=bundle.getParcelable("DATOS_USER"); ((TextView)findViewById(R.id.txtNombreSesion)).setText(user.getNombre()); ((TextView)findViewById(R.id.txtCorreoSesion)).setText(user.getEmail()); } public void listar(){ RequestQueue queue = Volley.newRequestQueue(MainActivity.this); StringRequest stringRequest = new StringRequest(Request.Method.POST, Conexion.URL_WEB_SERVICES + "listar-usuario.php", new Response.Listener<String>() { @Override public void onResponse(String response) { listarUsuario.setText(response); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { } }){ }; queue.add(stringRequest); } }
IniciarSesion
import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; import com.androfast.server.appcursovolley.datos.Conexion; import com.androfast.server.appcursovolley.negocio.Usuario; import com.android.volley.AuthFailureError; import com.android.volley.Request; import com.android.volley.RequestQueue; import com.android.volley.Response; import com.android.volley.VolleyError; import com.android.volley.toolbox.JsonObjectRequest; import com.android.volley.toolbox.StringRequest; import com.android.volley.toolbox.Volley; import org.json.JSONException; import org.json.JSONObject; import java.util.HashMap; import java.util.Map; public class IniciarSesion extends AppCompatActivity { TextView email,clave; Button login; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_iniciar_sesion); email=(TextView)findViewById(R.id.txtEmail); clave=(TextView)findViewById(R.id.txtClave); login=(Button)findViewById(R.id.btnIniciarSesion); login.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { iniciarSesion(); } }); } public void iniciarSesion(){ RequestQueue queue = Volley.newRequestQueue(IniciarSesion.this); StringRequest stringRequest = new StringRequest(Request.Method.POST, Conexion.URL_WEB_SERVICES + "iniciar-sesion.php", new Response.Listener<String>() { @Override public void onResponse(String response) { Usuario user=new Usuario(); try { JSONObject objResultado = new JSONObject(response); String extadox=objResultado.get("estado").toString(); if(!extadox.equalsIgnoreCase("exito")){ Toast.makeText(IniciarSesion.this,"Usuario o contraseña incorrecta",Toast.LENGTH_LONG).show(); }else{ user.setCodigo(objResultado.getJSONObject("datos").optInt("codigo")); user.setEmail(objResultado.getJSONObject("datos").optString("email")); user.setNombre(objResultado.getJSONObject("datos").optString("nombre")); Intent intent= new Intent(IniciarSesion.this,MainActivity.class); intent.putExtra("DATOS_USER",user); startActivity(intent); } } catch (JSONException e) { e.printStackTrace(); } } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { } }){ protected Map<String, String>getParams() throws AuthFailureError{ Map<String, String> params= new HashMap<>(); params.put("email", email.getText().toString()); params.put("clave",clave.getText().toString()); return params; } }; queue.add(stringRequest); } }
AndroidManifest
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.androfast.server.appcursovolley"> <uses-permission android:name="android.permission.INTERNET" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".IniciarSesion" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".MainActivity"></activity> </application> </manifest>
Puedes descargar el proyecto del siguiente link aquí.
password: www.androfast.com
Volley: Listar usuario en mysql-curso parte 1
Volley: Registrar en mysql-curso parte 3
Hola soy Alex Céspedes fundador de ANDROFAST, programo algunas cosas por diversión, me gusta aprender cosas nuevas y estoy pendiente de todo lo que tenga que ver con tecnología. Este blog lo cree para todas las personas que tengan dificultades en la programación, para ser sincero nunca fui bueno y reprobé algunos cursos de programación, pero mis ganas de aprender pudieron más. SI YO PUEDO TU PUEDES ANIMO!