
//activity_principal.xml
//activity_main.xml
//activity_presentacion.xml
package com.example.login;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.view.textclassifier.TextLinks;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
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.StringRequest;
import com.android.volley.toolbox.Volley;
import java.util.HashMap;
import java.util.Map;
public class MainActivity extends AppCompatActivity {
EditText edtUsuario, edtPassword;
Button btnLogin;
String usuario, password;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
edtUsuario=findViewById(R.id.edtUsuario);
edtPassword=findViewById(R.id.edtPassword);
btnLogin=findViewById(R.id.btnLogin);
recuperarPreferencias();
btnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
usuario=edtUsuario.getText().toString();
password=edtPassword.getText().toString();
if(!usuario.isEmpty() && !password.isEmpty()){
validarUsuario("http://192.168.20.23/appMovil/validar_usuario.php");
}else{
Toast.makeText(MainActivity.this,"No se permite campos vacios",Toast.LENGTH_SHORT).show();
}
}
});
}
private void validarUsuario(String URL){
StringRequest stringRequest = new StringRequest(Request.Method.POST, URL, new Response.Listener() {
@Override
public void onResponse(String response) {
if(!response.isEmpty()){
guardarPreferencias();
Intent intent = new Intent(getApplicationContext(),PrincipalActivity.class);
startActivity(intent);
finish();
}else{
Toast.makeText(MainActivity.this, "Usuario o clave incorrecta", Toast.LENGTH_SHORT).show();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(MainActivity.this, error.toString(), Toast.LENGTH_SHORT).show();
}
}){
@Nullable
@Override
protected Map getParams() throws AuthFailureError {
Map parametros = new HashMap();
parametros.put("usuario",usuario);
parametros.put("password",password);
return parametros;
}
};
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
}
private void guardarPreferencias(){
SharedPreferences preferences=getSharedPreferences("preferenciasLogin", Context.MODE_PRIVATE);
SharedPreferences.Editor editor=preferences.edit();
editor.putString("usuario",usuario);
editor.putString("password",password);
editor.putBoolean("sesion",true);
editor.commit();
}
private void recuperarPreferencias(){
SharedPreferences preferences=getSharedPreferences("preferenciasLogin", Context.MODE_PRIVATE);
edtUsuario.setText(preferences.getString("usuario","micorreo@gmail.com"));
edtPassword.setText(preferences.getString("password","123456"));
}
}
//PresentacionActivity
package com.example.login;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.ProgressBar;
public class PresentacionActivity extends AppCompatActivity {
ProgressBar progressBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_presentacion);
progressBar=findViewById(R.id.progressBar);
progressBar.setVisibility(View.VISIBLE);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
SharedPreferences preferences=getSharedPreferences("preferenciasLogin", Context.MODE_PRIVATE);
boolean sesion=preferences.getBoolean("sesion",false);
if(sesion){
Intent intent = new Intent(getApplicationContext(), PrincipalActivity.class);
startActivity(intent);
finish();
}else{
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
startActivity(intent);
finish();
}
}
},2000);
}
}
//PrincipalActivity
package com.example.login;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class PrincipalActivity extends AppCompatActivity {
Button btnCerrar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_principal);
btnCerrar=findViewById(R.id.btnCerrar);
btnCerrar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
SharedPreferences preferences=getSharedPreferences("preferenciasLogin", Context.MODE_PRIVATE);
preferences.edit().clear().commit();
Intent intent=new Intent(getApplicationContext(),MainActivity.class);
startActivity(intent);
finish();
}
});
}
}
//build.gradlew
plugins {
id 'com.android.application'
}
android {
namespace 'com.example.login'
compileSdk 32
defaultConfig {
applicationId "com.example.login"
minSdk 21
targetSdk 32
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
implementation 'androidx.appcompat:appcompat:1.4.1'
implementation 'com.google.android.material:material:1.5.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
implementation 'com.android.volley:volley:1.2.1'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}
prepare("SELECT * FROM usuario WHERE usu_usuario=? AND usu_password=?");
$sentencia->bind_param('ss',$usu_usuario,$usu_password);
$sentencia->execute();
$resultado = $sentencia->get_result();
if ($fila = $resultado->fetch_assoc()) {
echo json_encode($fila,JSON_UNESCAPED_UNICODE);
}
$sentencia->close();
$conexion->close();
?>