Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android

Respuesta
 
Herramientas
  #1  
Viejo 04/09/13, 21:52:29
Array

[xs_avatar]
arkos24 arkos24 no está en línea
Usuario novato en la web
 
Fecha de registro: sep 2013
Mensajes: 1
Tu operador: Movistar

Conexion Android Con Mysql remota

Soy un novato en esto de android, tiene sus compliques; pero aki vamos, el problema es que debo crear una aplicación que se conecte con una base de datos mysql de forma externa (remota). Pues lo he hecho, creé el main activity y las secundarias. Creé una clase de conexion y consulta que sigueindo metodos http hace las consultas y da respuesta a las peticiones via php y una interfaz como json, hasta ahí no hay problema. Ni siquiera cuando me conecto al simulador en el simulador todo va bien, pero he tratado de hacer pruebas en un disposotivo con android y me da problemas de conexion a la Ip, qué estoy haceindo mal.

Les agrdezco señores de corazón

Aqui la clase mainActivity::

package com.utp.doctoroffice;

import org.json.JSONException;
import org.json.JSONObject;

import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Intent;

public class MainActivity extends Activity implements OnClickListener
{

Button loginBtn;
RadioButton ra,rm,rp;
EditText usr,key;
RadioGroup opcion;
final int RB_ADMIN=10;
final int RB_DOCTO=20;
final int RB_PATIN=30;
String titulo,url;
String claf,user;
LoginAuth obj;
int elegido;
Intent novaWind;
JSONObject logger;
LogginUsr usrlog;

@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
startObjects();


}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}




private void startObjects()
{
//url="http://10.0.2.2/HygiaAdmin/comConBd.php";
url="http://192.254.211.195/~sebascel/evolucionemos.com/carlos/logEnter.php";
loginBtn=(Button)findViewById(R.id.btnLogin);
opcion=(RadioGroup)findViewById(R.id.btnGtipoUsr);
ra=(RadioButton)findViewById(R.id.rbtnAdmin);
rm=(RadioButton)findViewById(R.id.rbtnMedico);
rp=(RadioButton)findViewById(R.id.rbtnPaciente);
/
ra.setId(RB_ADMIN);
rm.setId(RB_DOCTO);
rp.setId(RB_PATIN);
/
rm.setChecked(true);
usr=(EditText)findViewById(R.id.txtUsuario);
key=(EditText)findViewById(R.id.txtClave);
loginBtn=(Button)findViewById(R.id.btnLogin);
usrlog= new LogginUsr();
loginBtn.setOnClickListener(this);
}

@Override
public void onClick(View v)
{
if(v.getId()==(findViewById(R.id.btnLogin)).getId( ))
{
elegido=opcion.getCheckedRadioButtonId();
/
usrlog.setPassuser( key.getText().toString().trim());
usrlog.setUsername(usr.getText().toString().trim() );
setUsertype(); // definimos el tipo del usurio
Log.i("Usuario",usrlog.getUsername());
Log.i("tipo usuario: ",usrlog.getTipo());
obj=new LoginAuth();

switch (elegido) {
case RB_ADMIN:
novaWind = new Intent(this, PortalAdmin.class);
break;
case RB_DOCTO:
novaWind = new Intent(this, PortalMedico.class);
break;

case RB_PATIN:
novaWind = new Intent(this, PortalPaciente.class);
break;

default:
break;
}

if(usr.getText().equals(null) || key.getText().equals(null))
{
this.alertNoUser(v,"Error de ingreso de datos!!"+"\nVerifique las entradas");
usr.requestFocus();

}
else
{
String res=obj.post(url,usrlog);
/
//Codigo del object Json
try {
logger=new JSONObject(res);
usrlog.setState(logger.getString("success"));

} catch (JSONException e) {
// TODO Auto-generated catch block
Log.i("Error de Captura",e.getMessage());
}
/
/
if(usrlog.getState().equals("0"))
{
alertNoUser(v,String.format("El usuario \'%s\' no aparece registrado ",usrlog.getUsername()));
cleanBoxes();
}
if(usrlog.getState().equals("1")){
try {
usrlog.setNombres(logger.getString("nombres"));
usrlog.setTitulo(logger.getString("titulo"));
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
alertExistUser(v, usrlog.getTitulo(), usrlog.getNombres());
novaWind.putExtra("nombre", usrlog.getNombres());
startActivity(novaWind);
}
}

}
}

private void alertExistUser(View v, String string, String res) {
new AlertDialog.Builder(this)
.setTitle("Bienvenido!")
.setMessage(Utilidades.saludar()+"\n"+string+": "+res)
.setNeutralButton("Ok", null)
.show();


}

private void alertNoUser(View v,String msg){

new AlertDialog.Builder(this)
.setTitle("Error de Autenticación!!")
.setMessage(msg)
.setNeutralButton("Listo", null)
.show();

}

private void cleanBoxes()
{

usr.setText(null);
key.setText(null);
usr.requestFocus();
ra.setChecked(true);

}

private void setUsertype(){

switch(elegido){
case RB_ADMIN:
usrlog.setTipo("admin");
break;
case RB_DOCTO:
usrlog.setTipo("medico");
break;
case RB_PATIN:
usrlog.setTipo("paciente");
break;
default:
usrlog.setTipo("medico");
break;

}

}





}


Aqui la clase de conexion a la base de datos

package com.utp.doctoroffice;

import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity ;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;

import org.apache.http.util.EntityUtils;

import android.util.Log;

public class LoginAuth {

public String post(String posturl, LogginUsr loger)
{

try {

HttpClient httpclient = new DefaultHttpClient();
// HttpClient nos permitira la conexion mediante peticiones http

HttpPost httppost = new HttpPost(posturl);

// HttpPost permite enviar una peticion tipo (POST,URL)

// Aqui se anhaden los parámetros que se enviarán a php
// capturados de las cajas de texto

List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("usuario",loger.getUsername())) ;
params.add(new BasicNameValuePair("clave",loger.getPassuser()));
params.add(new BasicNameValuePair("tipo",loger.getTipo()));

// Actualizamos la entidad con los parámetros recibidos
httppost.setEntity(new UrlEncodedFormEntity(params));

// Finalmente se ejecuta enviando la info al servidor
HttpResponse resp = httpclient.execute(httppost);
// en la variable ent se recibe la respuesta del entity
HttpEntity ent = resp.getEntity();

// Convertimos la respuesta a String
String text = EntityUtils.toString(ent);
// retornamos la respuesta
Log.i("En la clase que llama",text);
return text;

}
catch(Exception e) {
Log.i("En la clase que llama",e.getMessage());
return "Fallo al contactar la IP";

}

}




}

Última edición por arkos24 Día 04/09/13 a las 21:55:19.
Responder Con Cita


  #2  
Viejo 04/09/13, 22:07:45
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
Doy por supuesto que le has dado permisos a la App para conectarse a Internet.

Quitado de esto, y sin mirar mucho el código en detalle, tiene toda la pinta de que estás usando la conexión Http en el hilo principal, y seguro que el móvil donde lo estás probando es una versión superior a Android 3.0. Si es el segundo caso, tienes un NetworkOnMainThreadException, haz uso de la conexión Http en otro hilo, lo mejor es usar un AsyncTask.
Responder Con Cita
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 16:33:53 (GMT +2)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /