Я создал класс, чтобы сообщать о неперехваченных исключениях, например: Как получить данные о сбоях из моего приложения для Android?
Мой класс:
package br.com.tdta.service.sender;
import android.app.Activity;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import br.com.tdta.service.view.MessageDialog;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.List;
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;
/**
*
* @author eliangela
*/
public class ErrorSender implements Thread.UncaughtExceptionHandler {
private Activity activity;
public ErrorSender(Activity activity) {
this.activity = activity;
}
public void sendError(final String error) {
try {
List<NameValuePair> values = new ArrayList<NameValuePair>();
values.add(new BasicNameValuePair("error", error));
HttpPost httppost = new HttpPost("http://192.168.1.1/android/recebeErros.php");
httppost.setEntity(new UrlEncodedFormEntity(values));
HttpClient httpclient = new DefaultHttpClient();
httpclient.execute(httppost);
} catch (IOException ex) {
}
}
public void uncaughtException(Thread thread, Throwable trw) {
new Thread(new Runnable() {
public void run() {
MessageDialog.showOkDialog(activity, "Error!\nClick to finish.", new OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
activity.finish();
}
});
}
}).start();
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
trw.printStackTrace(pw);
pw.close();
sendError(sw.toString());
}
}
Этот класс сообщает об ошибке по указанному URL.Но экран не отвечает, когда появляется диалоговое окно сообщения.Если я не помещаю диалоговое окно сообщения, экран обычно закрывается (activity.finish ()), но когда я помещаю окно сообщения, появляется сообщение, и экран перестает отвечать.
Что я делаю неправильно?
Большое спасибо.