Bom estava com um projeto praticamente terminado em Android com o cliente testando e já dando OK para só mudar algumas imagens e texto do programa nada de mais, aí fui pegar esses dias novamente para testar o programa sem alterar nada ainda e não funciona mais sem eu fazer simplesmente nada, nem o programa que estava no meu celular funcionando também não funciona mais. O erro é o seguinte abaixo:
11-05 16:06:31.691 3926-4274/br.com.escconsultoria.escoficina E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
Process: br.com.escconsultoria.escoficina, PID: 3926
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:300)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:841)
Caused by: java.lang.RuntimeException: Can’t create handler inside thread that has not called Looper.prepare()
at android.os.Handler.(Handler.java:200)
at android.os.Handler.(Handler.java:114)
at android.widget.Toast$TN.(Toast.java:327)
at android.widget.Toast.(Toast.java:92)
at android.widget.Toast.makeText(Toast.java:241)
at br.com.escconsultoria.escoficina.view.MainActivity$FindByCpfClienteAsyncTask.doInBackground(MainActivity.java:151)
at br.com.escconsultoria.escoficina.view.MainActivity$FindByCpfClienteAsyncTask.doInBackground(MainActivity.java:108)
at android.os.AsyncTask$2.call(AsyncTask.java:288)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:841)
Minha classe abaixo aonde está dando erro:
public class MainActivity extends Activity {
private EditText editTextCPF;
private Button buttonConsultar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Carrega Os Campos Da Tela
editTextCPF = findViewById(R.id.editTextCPF);
buttonConsultar = findViewById(R.id.buttonConsultar);
buttonConsultar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Context context = getApplicationContext();
int time = Toast.LENGTH_SHORT;
if (editTextCPF.getText().toString().isEmpty()) {
String message = "Informe O CPF Para Entrar No Sistema.";
Toast toast = Toast.makeText(context, message, time);
toast.show();
} else if (editTextCPF.getText().length() > 11) {
String message = "O CPF É Maior Que 11 Dígitos.";
Toast toast = Toast.makeText(context, message, time);
toast.show();
} else if (editTextCPF.getText().length() < 11) {
String message = "O CPF É Menor Que 11 Dígitos.";
Toast toast = Toast.makeText(context, message, time);
toast.show();
} else if (editTextCPF.getText().toString().isEmpty() == false) {
try {
FindByCpfClienteAsyncTask findByCpfClienteModelAsyncTask = new FindByCpfClienteAsyncTask();
findByCpfClienteModelAsyncTask.execute("https://escoficinawebservice.herokuapp.com/cliente/" + editTextCPF.getText());
ClienteSaidaDTO clienteSaidaDTO = findByCpfClienteModelAsyncTask.get();
if (clienteSaidaDTO.getCode().equals(1)) {
String message = "CPF Encontrado.";
Toast toast = Toast.makeText(context, message, time);
toast.show();
message = "Buscando As Informações Do Cliente.";
toast = Toast.makeText(context, message, time);
toast.show();
Intent intentESCOficinaActivity = new Intent(MainActivity.this, ESCOficinaActivity.class);
intentESCOficinaActivity.putExtra("clienteSaidaDTO", new Gson().toJson(clienteSaidaDTO));
startActivity(intentESCOficinaActivity);
} else {
String message = "CPF Não Encontrado.";
Toast toast = Toast.makeText(context, message, time);
toast.show();
}
} catch (Exception e) {
String message = "Erro: " + e.getMessage();
Toast toast = Toast.makeText(context, message, time);
toast.show();
}
}
}
});
}
class FindByCpfClienteAsyncTask extends AsyncTask<String, Void, ClienteSaidaDTO> {
@Override
protected void onPreExecute() {
super.onPreExecute();
Context context = getApplicationContext();
String message = "Aguarde... Verificando CPF.";
int time = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, message, time);
toast.show();
}
@Override
protected ClienteSaidaDTO doInBackground(String... params) {
String urlString = params[0];
HttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(urlString);
ClienteSaidaDTO clienteSaidaDTO = null;
try {
HttpResponse response = httpClient.execute(httpGet);
HttpEntity httpEntity = response.getEntity();
if (httpEntity != null) {
InputStream inputStream = httpEntity.getContent();
String json = toString(inputStream);
inputStream.close();
clienteSaidaDTO = getCliente(json);
}
} catch (Exception e) {
Context context = getApplicationContext();
int time = Toast.LENGTH_SHORT;
String message = "Erro: " + e.getMessage();
Toast toast = Toast.makeText(context, message, time);
toast.show();
return null;
}
return clienteSaidaDTO;
}
private ClienteSaidaDTO getCliente(String jsonString) {
ClienteSaidaDTO clienteSaidaDTO = new ClienteSaidaDTO();
try {
JSONObject jsonObjectConvertString = new JSONObject(jsonString);
JSONObject jsonObjectEntity = jsonObjectConvertString.getJSONObject("entity");
JSONObject jsonObjectClienteModel = jsonObjectEntity.getJSONObject("clienteModel");
ClienteModel clienteModel = new ClienteModel();
clienteSaidaDTO.setCode(jsonObjectEntity.getInt("code"));
clienteSaidaDTO.setMessage(jsonObjectEntity.getString("message"));
clienteModel.setCodigoCliente(jsonObjectClienteModel.getInt("codigoCliente"));
clienteModel.setNomeCliente(jsonObjectClienteModel.getString("nomeCliente"));
clienteModel.setCpfCliente(jsonObjectClienteModel.getString("cpfCliente"));
clienteModel.setRgCliente(jsonObjectClienteModel.getString("rgCliente"));
clienteModel.setEmailCliente(jsonObjectClienteModel.getString("emailCliente"));
Long dataCadastrocliente = jsonObjectClienteModel.getLong("dataCadastroCliente");
clienteModel.setDataCadastroCliente(new Date(dataCadastrocliente));
Long dataNascimentoCliente = jsonObjectClienteModel.getLong("dataNascimentoCliente");
clienteModel.setDataNascimentoCliente(new Date(dataNascimentoCliente));
if (jsonString.contains("dddCelular1Cliente")) {
clienteModel.setDddCelular1Cliente(jsonObjectClienteModel.getInt("dddCelular1Cliente"));
}
if (jsonString.contains("numeroCelular1Cliente")) {
clienteModel.setNumeroCelular1Cliente(jsonObjectClienteModel.getString("numeroCelular1Cliente"));
}
if (jsonString.contains("dddCelular2Cliente")) {
clienteModel.setDddCelular2Cliente(jsonObjectClienteModel.getInt("dddCelular2Cliente"));
}
if (jsonString.contains("numeroCelular2Cliente")) {
clienteModel.setNumeroCelular2Cliente(jsonObjectClienteModel.getString("numeroCelular2Cliente"));
}
if (jsonString.contains("dddTelefoneCliente")) {
clienteModel.setDddTelefoneCliente(jsonObjectClienteModel.getInt("dddTelefoneCliente"));
}
if (jsonString.contains("numeroTelefoneCliente")) {
clienteModel.setNumeroTelefoneCliente(jsonObjectClienteModel.getString("numeroTelefoneCliente"));
}
clienteSaidaDTO.setClienteModel(clienteModel);
} catch (JSONException e) {
Context context = getApplicationContext();
int time = Toast.LENGTH_SHORT;
String message = "Erro: " + e.getMessage();
Toast toast = Toast.makeText(context, message, time);
toast.show();
return null;
}
return clienteSaidaDTO;
}
private String toString(InputStream is) throws IOException {
byte[] bytes = new byte[1024];
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int lidos;
while ((lidos = is.read(bytes)) > 0) {
baos.write(bytes, 0, lidos);
}
return new String(baos.toByteArray());
}
}
}