I have a problem in my application, when consuming a web service service in Json, the application is closing.
The idea of my application is to consume this web service to validate my email and password, and returning a Json with my user data (email, first and last name), I am new to Android programming.
I would like you to help me.
This code from MainActivity.java
public class MainActivity extends AppCompatActivity {
//Variaveis que serão utilizadas para ligar Java com XML
private EditText et_email;
private EditText et_senha;
private TextView tv_esqueci_senha;
private Button btn_registrar;
private Button btn_acessar;
private ProgressDialog progressDialog;
private Context mContext;
private String logAutenticacao;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.telalogin);
//Modificando o título da Activity tela de login
setTitle(getString(R.string.telalogin_titulo_activity));
//Métodos base
inicializaVariavel();
inicializaAcao();
}
//Inicializando as variaveis
private void inicializaVariavel() {
//Inicializando o context
mContext = getBaseContext();
//Edit Text
et_email = (EditText) findViewById(R.id.telalogin_et_email);
et_senha = (EditText) findViewById(R.id.telalogin_et_senha);
//Buttons
btn_registrar = (Button) findViewById(R.id.telalogin_btn_registrar);
btn_acessar = (Button) findViewById(R.id.telalogin_btn_acessar_conta);
//TextView
tv_esqueci_senha = (TextView) findViewById(R.id.telalogin_tv_esqueci_senha);
}
//Método responsavel pelas ações da activity telalogin
private void inicializaAcao() {
//Ação do botão Registrar
btn_registrar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Criando uma intent e atribuindo a classe tela de registro do usuário
//Encerrando a activity de login
Intent mIntent = new Intent(mContext, TelaRegistrarUsuario.class);
startActivity(mIntent);
finish();
}
});
//Método do botão acessar
btn_acessar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Verifica se os campos estão preenchidos
if (validaCampos()) {
//Criando intent e atribuindo a clase Tela Principal
//Encerrando a activity Tela de Login
Intent mIntent = new Intent(mContext, TelaPrincipal.class);
startActivity(mIntent);
finish();
}
}
});
//Método do TextView esqueci minha senha
tv_esqueci_senha.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Criando intent e atribuindo a clase Tela Esqueci Senha
//Encerrando a activity da Tela de Login
Intent mIntent = new Intent(mContext, TelaEsqueciSenha.class);
startActivity(mIntent);
finish();
}
});
}
//Método de validação dos campos da activity
private boolean validaCampos() {
//Resgatando os valores que estão nos edittext
String email = et_email.getText().toString().trim();
String senha = et_senha.getText().toString().trim();
//Verifica se o campo email esta vazio
if (email.length() == 0){
et_email.setError(getString(R.string.telalogin_mgserro_et_email_campo_vazio));
return false;
}else{
//Verifica se o email digitado esta no formato correto
if(!Funcoes.validaEmail(email)){
et_email.setError(getString(R.string.telalogin_msgerro_et_email_email_formato_incorreto));
return false;
}
}
//Verifica se o campo senha esta vazio
if (senha.length() == 0){
et_senha.setError(getString(R.string.telalogin_msgerro_et_senha_campo_vazio));
return false;
}
//Aqui deve ser realizado uma consulta no WebService e os
//dados ser comparados
//Executa o método de sincronização/Autenticação
new SincronizaUsuario().execute();
//
if (logAutenticacao.equals("Erro")){
Toast.makeText(mContext, R.string.telalogin_msgerro_emailesenha_incorretos,
Toast.LENGTH_LONG).show();
return false;
}
return true;
}
private class SincronizaUsuario extends AsyncTask<Void, Integer, Void>{
//
String email = et_email.getText().toString().trim();
String senha = ToolBox.md5(et_senha.getText().toString().trim());//Converte senha em MD5
String funcao = "f15112012";
@Override
protected void onPreExecute() {
//Exibe um mensage de dialogo para usuário
//notificando que os dados estão sendo validados no webservice
progressDialog = new ProgressDialog(MainActivity.this);
progressDialog.setCancelable(false);//Não pode cancelar a dialog
progressDialog.setTitle("Autenticação"); //Titulo
progressDialog.setMessage("Aguarde seus dados estão sendo validados no servidor!"); //Mensagem
//Exibe dialog
progressDialog.show();
}
@Override
protected Void doInBackground(Void... params) {
//
try{
//Cria e inicializa um objeto Gson
Gson gsonUsuario = new Gson();
//
Transmissao_Env transmissao_env = new Transmissao_Env();
transmissao_env.setEmail(email);
transmissao_env.setSenha(senha);
transmissao_env.setFuncao(funcao);
//
String resultado = ToolBox.comunicacao("http://192.168.0.8/wstictic/index.php", gsonUsuario.toJson(transmissao_env));
//
String parRes[] = resultado.split("#WSTAG#");
//
switch (parRes.length) {
case 2:
if (parRes[0].equals("0")) {
//
Transmissao_Rec rec = gsonUsuario.fromJson(parRes[1], Transmissao_Rec.class);
//
logAutenticacao = "Sucesso";
} else {
//
logAutenticacao = "Erro";
}
break;
default:
//
logAutenticacao = "Erro";
break;
}
}catch (Exception e){
String erro = e.toString();
}finally {
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
//
progressDialog.dismiss();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
// if (id == R.id.action_settings) {
// return true;
// }
return super.onOptionsItemSelected(item);
}
}