Application is closing, while consuming webservice

-2

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);
    }
}
    
asked by anonymous 06.11.2015 / 19:00

1 answer

2

Step 1:

Please enter a check to see if there is an internet connection:

// Função para verificar existência de conexão com a internet
public boolean verificaConexao(Context classe) {
    boolean conectado = false;
    try {
        ConnectivityManager gerenciador = (ConnectivityManager) classe.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo informacao = gerenciador.getActiveNetworkInfo();
        if ((informacao != null) && (informacao.isConnectedOrConnecting()) && (informacao.isAvailable())) {
            conectado = true;
        }
    } catch (Exception erro) {
    }
    return conectado;
}

Step 2: Use the following code to connect and get the data:

public void enviarLogin(View v) {
String LOGIN_URL = "http://www.seuwebservice.com/suapagina.php";
//Exibe Loading
ProgressDialog progressBar;
progressBar = new ProgressDialog(this);
progressBar.setCancelable(false);
progressBar.setTitle("Aguarde");
progressBar.setMessage("Validando dados...");
progressBar.setProgressStyle(ProgressDialog.STYLE_SPINNER); 
progressBar.show();
final View view = v;    

Runnable runnable = new Runnable(){
    @Override
    public void run(){
        int SDK_INT = Build.VERSION.SDK_INT;
        if (SDK_INT > 8) {
            if (validaFormLogin()) { //chame a sua função pra validar os dados
                if (verificaConexao(Login.this)) { //No seu caso é MainActivity.this
                    try {
                        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
                        StrictMode.setThreadPolicy(policy);
                        String botaoPressionado;

                        switch (view.getId()) { //qual botão foi selecionado (login ou cadastrar, caso haja)
                            case R.id.btnLogin:
                                botaoPressionado = "login";
                                break;
                            case R.id.btnCad:
                                botaoPressionado = "cadastrar";
                                break;
                            default:
                                botaoPressionado = "login";
                                break;
                        } 

                        EditText loginDigitado, senhaDigitada;
                        loginDigitado = (EditText) findViewById(R.id.usuario);
                        senhaDigitada = (EditText) findViewById(R.id.senha);

                        //início do HTTP POST // $usuario = $_POST['usuario']; $senha = $_POST['senha']; $metodo = $_POST['metodo'];
                        ArrayList<BasicNameValuePair> postParameters = new ArrayList<BasicNameValuePair>();
                        postParameters.add(new BasicNameValuePair("usuario", loginDigitado.getText().toString()));
                        postParameters.add(new BasicNameValuePair("senha", senhaDigitada.getText().toString()));
                        postParameters.add(new BasicNameValuePair("metodo", botaoPressionado));

                        String response;
                        response = CustomHttpClient.executeHttpPost(LOGIN_URL, postParameters);

                        if (!response.equals("loginERRO\n")) { //o retorno vem com um ENTER no final, então adicione \n
                            dadosValidados(response); //Login OK, finaliza em outro método, enviando o JSON retornado
                        } else {
                            alerta(3); //Mostra algum erro ao usuário
                        }
                        progressBar.dismiss(); //retira o loading da tela
                    } catch (Exception e) {
                        e.printStackTrace();
                        progressBar.dismiss();
                    }
                }else{ //sem internet
                    progressBar.dismiss();
                    alerta(1);
                }
            }else { //form não validado
                progressBar.dismiss();
                alerta(2);
            }
        }else{ 
            progressBar.dismiss();
            alerta(0);
        }
    }
};

new Thread(runnable).start();}
    
07.11.2015 / 03:12